我第一次尝试设置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'];
}
我错过了什么吗?
答案 0 :(得分:0)
在审查了bundel的代码几天之后,我发现问题是捆绑包无法读取公钥,更改文件的权限解决了问题。