sergic / api-authentication-bundle
此包最新版本(dev-master)无可用许可证信息。
Symfony2 api认证包
dev-master / 0.1.x-dev
2013-10-28 14:10 UTC
Requires
- symfony/symfony: >=2.1.0
This package is not auto-updated.
Last update: 2024-09-24 01:05:43 UTC
README
Symfony2的API认证包
安装
1. 将此包添加到你的composer.json文件中
{ "require": { "sergic/api-authentication-bundle": "0.1.*@dev" } }
现在运行以下命令让composer下载此包
$ php composer.phar update sergic/api-authentication-bundle
2. 将此包添加到应用内核中
// application/ApplicationKernel.php public function registerBundles() { return array( // ... new INB\Bundle\ApiAuthenticationBundle\INBApiAuthenticationBundle(), // ... ); }
第3步:创建你的用户类
包含token参数
// src/Acme/AcmeBundle/Entity/User.php /** * User Api token * * @var string */ protected $token; public function __construct() { $this->token = null; } /** * {@inheritdoc} */ public function getToken() { return $this->token; } /** * {@inheritdoc} */ public function setToken($token) { $this->token = $token; return $this; } /** * {@inheritdoc} */ public function generateApiToken() { $this->token = md5(md5(time() + rand(11111, 99999))); return $this; }
第4步:创建你的用户仓库类并将其初始化为服务
// src/Acme/AcmeBundle/Repositroy/UserRepository.php use Ft\Bundle\CoreBundle\Doctrine\ORM\EntityRepository; class UserRepository extends EntityRepository { /** * Constructor. * * @param EncoderFactoryInterface $encoderFactory * @param EntityManager $em The EntityManager to use. * @param ClassMetadata $class The class descriptor. */ public function __construct($em, ClassMetadata $class, EncoderFactoryInterface $encoderFactory = null) { parent::__construct($em, $class); $this->encoderFactory = $encoderFactory; } }
# src/Acme/AcmeBundle/Resources/config/services.yml parameters: acme.user.class: Acme\AcmeBundle\Entity\User acme.repository.user.class: Acme\AcmeBundle\Repositroy\UserRepository services: user_metadata: class: Doctrine\ORM\Mapping\ClassMetadata factory-method: getClassMetadata arguments: [%acme.user.class%] acme.repository.user: class: %acme.repository.user.class% arguments: [@doctrine.orm.entity_manager, @user_metadata, @security.encoder_factory]
第4步:配置应用的安全.yml文件
# app/config/security.yml security: providers: api_provider: id: inb_api_auth.provider firewalls: api: provider: api_provider pattern: ^(/[^\/]+)/api|^/api access_denied_url: ^(/[^\/]+)/api|^/api/unauthorized api: { lifetime: '30D' } stateless: true anonymous: true encoders: Acme\AcmeBundle\Entity\User: sha512 access_control: - { path: ^(/[^\/]+)/api/*|^/api/*, roles: [ROLE_USER] }