3 回答
TA贡献1777条经验 获得超3个赞
也许您忘记在防火墙部分或登录参数(电子邮件作为用户名)中配置登录防火墙..
检查这个
1配置/包/security.yaml
firewalls:
login:
pattern: ^/api/login
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: ^/api
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
access_control:
- { path: ^/api/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/, role: IS_AUTHENTICATED_FULLY }
2配置/routes.yaml
api_login_check:
path: /api/login_check
3用curl测试一下
X POST -H "Content-Type: application/json" http://localhost/api/login_check -d '{"email":"user@example.com","password":"pass"}'
TA贡献1807条经验 获得超9个赞
您不允许匿名访问任何防火墙。您应该将匿名选项添加到您的主防火墙中。
main:
pattern: ^/
stateless: true
anonymous: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
provider: doctrine_provider
TA贡献2037条经验 获得超6个赞
我发现此升级存在问题,但我有解决方案。
在 lexik_jwt_authentication.yaml 文件中:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
token_ttl: '%env(JWT_TTL)%'
token_extractors:
authorization_header:
enabled: true
prefix: '%env(JWT_TOKEN_PREFIX)%'
name: Authorization
user_identity_field: email
- 3 回答
- 0 关注
- 96 浏览
添加回答
举报