agven/symfony-jwt-auth

Symfony REST API 的 JWT 认证包

安装次数: 963

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2019-08-14 09:02 UTC

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);
    }

待办事项

  • 添加测试。
  • 改进文档。