JWT使用Symfony 2.7进行身份验证

Thé*_*héo 5 symfony jwt symfony-2.7 lexikjwtauthbundle

我正在尝试在我的Symfony 2.7应用程序上使用LexikJWTAuthenticationBundleFOSUserBundle.

基本上,FOSUserBundle配置工作正常:我正确加载我的灯具,如果我尝试通过登录表单登录它成功.

从login_check获取令牌也有效.然后我在头文件中放置了带有"Bearer"的Authorization标头,并尝试访问另一个页面.它总是会产生401响应.

谁有任何关于可能是什么问题或如何进行调试的线索?

这是我的配置:

# app/config/config.yml

# DunglasJsonLdApi
dunglas_json_ld_api:
    title:       %api_name%
    description: %api_description%
    default:
        order: DESC

# FOSUserBundle
fos_user:
    db_driver:     orm
    firewall_name: api
    user_class:    ApiBundle\Bundles\UserBundle\Entity\User

# LewikJWTAuthentificationBundle
lexik_jwt_authentication:
    private_key_path: %kernel.root_dir%/config/jwt/private.pem
    public_key_path:  %kernel.root_dir%/config/jwt/public.pem
    pass_phrase:      %jwt_pass_phrase%
    token_ttl:        86400
Run Code Online (Sandbox Code Playgroud)
# app/config/routing.yml

# DunglasJsonLdBundle
api_doc:
    resource: @DunglasJsonLdApiBundle/Resources/config/routing.xml
    prefix:   /api

api:
    resource: .
    type:     json-ld
    prefix:   /api

# FOSUserBundle
fos_user_security_login:
    path:     /login
    defaults: { _controller: FOSUserBundle:Security:login }

fos_user_security_check:
    path:     /api/login_check
    defaults: { _controller: FOSUserBundle:Security:check }

fos_user_security_logout:
    path:     /logout
    defaults: { _controller: FOSUserBundle:Security:logout }
Run Code Online (Sandbox Code Playgroud)
# app/config/security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_CA:          ROLE_USER
        ROLE_SUPER_ADMIN: [ ROLE_CA, ROLE_ALLOWED_TO_SWITCH ]

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        dev:
            pattern:   ^/(_(profiler|wdt|error)|css|images|js)/
            security:  false

        login:
            pattern:   ^/login|^/api/login
            provider:  fos_userbundle
            stateless: true
            anonymous: true
            form_login:
                login_path:               fos_user_security_login
                check_path:               fos_user_security_check
                username_parameter:       username
                password_parameter:       password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
                require_previous_session: false

        api:
            pattern:   ^/api
            provider:  fos_userbundle
            stateless: true
            anonymous: true
            lexik_jwt:

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: IS_AUTHENTICATED_FULLY }
Run Code Online (Sandbox Code Playgroud)

提供完整的应用在这里.

Thé*_*héo 5

它现在似乎工作正常.自从我发布问题之后我没有改变任何东西,在发布之前我重启了我的机器,重新启动了MySQL,nginx,PHP5-FPM并删除了Symfony缓存,所以我真的不明白发生了什么......