我有一条允许经过身份验证的用户和匿名用户的路由。 (如果用户通过身份验证,响应将会有所不同)。 但对于已登录的用户,我无法检索用户的令牌。有办法处理这个吗? 谢谢!
这是我的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 }
答案 0 :(得分:0)
您可以使用security.authorization_checker
服务来检查用户是否已登录。在您的控制器中,您可以这样做:
$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY');
返回布尔值。
有关详细信息,请参阅Symfony Secutiry Component Documentation。
请特别注意IS_AUTHENTICATED_FULLY
和IS_AUTHENTICATED_REMEMBERED
之间的区别,以了解您的应用中发生了什么。