Symfony2 LexikJWTAuthenticationBundle无法通过login_check

时间:2016-03-02 19:51:38

标签: php symfony lexikjwtauthbundle

我第一次尝试设置LexikJWTAuthenticationBundle(Symfony 3)。

一切顺利,直到我尝试向受ROLE_USER限制的网址发出GET请求。

我可以向login_check网址发出POST请求,该网址返回令牌,然后我尝试向上面提到的网址发出GET请求。

我在请求标题上添加了令牌(授权:承载...),我可以在Google Chrome网络标签上看到标题。然而,响应总是回复为" 401 Unauthorized"。我不确定我在这里错过了什么,并且现在已经试图解决这个问题,并且每个论坛都可能进行搜索。

这是我的security.yml

security:

user-providers
    providers:
        db_provider:
            entity:
                class: ApiBundle:ApiUser
                property: email

encoders:
    ApiBundle\Entity\ApiUser:
        algorithm: bcrypt

firewalls:

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

    login:
        pattern:  ^/login_check
        provider: db_provider
        stateless: true
        anonymous: true
        form_login:
            check_path:               api_login_check
            username_parameter:       email
            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:   ^/
        stateless: true
        lexik_jwt:
            authorization_header:
                enabled: true
                prefix:  Bearer
            query_parameter:
                enabled: false
                name:    bearer

access_control:
    - { path: ^/testpage,    roles: ROLE_USER }
    - { path: ^/register,    roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login_check, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/,            roles: IS_AUTHENTICATED_ANONYMOUSLY }

以下是headers being sent 在我的ApiUser.php UserModel上,我有像这样实现的getRoles()方法(用于测试):

public function getRoles()
{
    return ['ROLE_USER'];
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

在审查了bundel的代码几天之后,我发现问题是捆绑包无法读取公钥,更改文件的权限解决了问题。

相关问题