在Symfony中处理IS_AUTHENTICATED_ANONYMOUSLY路径后面的经过身份验证的用户

时间:2016-08-23 10:58:30

标签: symfony

我有一条允许经过身份验证的用户和匿名用户的路由。 (如果用户通过身份验证,响应将会有所不同)。 但对于已登录的用户,我无法检索用户的令牌。有办法处理这个吗? 谢谢!

这是我的security.yml文件:

firewalls:
    login:
        pattern:  ^/api/login
        stateless: true
        anonymous: true
        form_login:
            check_path:               /api/login_check
            success_handler:          lexik_jwt_authentication.handler.authentication_success
            failure_handler:          lexik_jwt_authentication.handler.authentication_failure
            require_previous_session: false
            username_parameter:       _email
            password_parameter:       _password

    episodes:
        pattern:   ^/api/episodes
        stateless: true
        anonymous: true

    api:
        pattern:   ^/api
        stateless: true
        lexik_jwt: ~

access_control:
    - { path: ^/api/login,    roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api/episodes, roles: [IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY] }
    - { path: ^/api,          roles: IS_AUTHENTICATED_FULLY }

1 个答案:

答案 0 :(得分:0)

您可以使用security.authorization_checker服务来检查用户是否已登录。在您的控制器中,您可以这样做:

$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY'); 

返回布尔值。

有关详细信息,请参阅Symfony Secutiry Component Documentation

请特别注意IS_AUTHENTICATED_FULLYIS_AUTHENTICATED_REMEMBERED之间的区别,以了解您的应用中发生了什么。