agven / symfony-jwt-auth
Symfony REST API 的 JWT 认证包
dev-master
2019-08-14 09:02 UTC
Requires
- php: ^7.1.3
- firebase/php-jwt: ~5.0
- symfony/framework-bundle: 4.3.*
- symfony/security-guard: 4.3.*
Requires (Dev)
- phpunit/phpunit: ^5.1
This package is auto-updated.
Last update: 2024-09-14 20:25:28 UTC
README
轻量级的 JWT 认证包。该包还提供了刷新和访问令牌。
安装
composer require agven/symfony-jwt-auth
或者将 agven/symfony-jwt-auth
添加到你的 composer.json
文件中。此包使用 firebase/php-jwt
库来解码和编码 JWT 令牌。
配置你的 security.yml
security: # ... firewalls: auth: pattern: ^/api/auth anonymous: true stateless: true api: pattern: ^/api stateless: true guard: authenticators: - Agven\JWTAuthBundle\Security\TokenAuthenticator # ... access_control: - { path: ^/api/auth, roles: IS_AUTHENTICATED_ANONYMOUSLY, methods: [POST] } - { path: ^/api, roles: ROLE_ADMIN }
你可以通过以下服务获取用户的令牌:
// ... use Agven\JWTAuthBundle\Core\Services\Manager\TokenInterface as TokenManagerInterface; // ... class AuthManager { private $tokenManager; public function __construct(TokenManagerInterface $tokenManager) { $this->tokenManager = $tokenManager; } public function auth(string $username, string $password) { $user = $this->userRepository->findOneByUsername($username); if (!$user) { throw new EntityNotFoundException('User not found.'); } // ... // Validate password or todo something else // ... $token = $this->tokenManager->createAccessToken($user); }
待办事项
- 添加测试。
- 改进文档。