我有一个使用symfony 4.4制作的REST API,在身份验证过程中遇到了问题。一切都很好,但我发现有时login_check会返回401 Unauthorized,而几天前可以访问的用户没有问题。我正在使用LexikJWTAuthenticationBundle
安全:
security:
role_hierarchy:
ROLE_ADMIN: ROLE_ADMIN
ROLE_MANAGER: ROLE_MANAGER
ROLE_CLIENT: ROLE_CLIENT
ROLE_HOST: ROLE_HOST
encoders:
AppEntityUser:
algorithm: auto
providers:
app_user_provider:
entity:
class: AppEntityUser
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/api/login
stateless: true
anonymous: true
json_login:
check_path: /api/login_check
success_handler: app.jwt_authenticator_success_handler
failure_handler: lexik_jwt_authentication.handler.authentication_failure
api:
pattern: ^/api
anonymous: true
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
main:
anonymous: ~
logout:
path: app_logout
delete_cookies: ['rhsso']
success_handler: logout_handler
# where to redirect after logout
# target: app_any_route
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
我不知道发生了什么。我试图至少记录凭据验证的时间,但我找不到拦截login_check路由代码的方法。我甚至不知道symfony安全中的代码在哪里。有什么帮助吗?提前谢谢。
/api/login_check路径可能在/config/routes/jwt.yaml或config/routes中定义。。。
bin/console debug:router api_login_check
可能会也可能不会脱落一些光
如果你运行
bin/console debug:container lexik_jwt_authentication.jwt_token_authenticator
你应该找到要拦截的类。也许你可以深入了解故障处理程序,找出你为什么会得到401。代币到期听起来是可能的,如果它不时发生的话。