拦截来自symfony 4.4的login_check路径

问题描述

我有一个使用symfony 4.4制作的REST API,并且在身份验证过程中遇到了问题。 一切正常,但我遇到的问题是,有时login_check返回401未经授权的用户,而这些用户几天前可以无问题地访问。 我正在使用LexikJWTAuthenticationBundle

安全性:

security:
    role_hierarchy:
        ROLE_ADMIN: ROLE_ADMIN
        ROLE_MANAGER: ROLE_MANAGER
        ROLE_CLIENT: ROLE_CLIENT
        ROLE_HOST: ROLE_HOST

    encoders:
        App\Entity\User:
            algorithm: auto

    providers:
        app_user_provider:
            entity:
                class: App\Entity\User
                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的原因。如果令牌到期不时发生,则听起来可能是令牌。