我试图设置基于会话的身份验证,而不是当前使用的JWT,因为我不想将JWT令牌存储在本地存储中。
我已成功使用本指南https://symfony.com/doc/current/security/json_login_setup.html对自己进行身份验证,并获得了有关用户的响应数据。
但是对任何端点的进一步请求都会使我未经授权401。
这是我的安全Yaml
security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/_(profiler|wdt)
security: false
api:
pattern: ^/api/
stateless: true
anonymous: true
provider: app_user_provider
json_login:
check_path: /api/login
username_path: email
password_path: password
#success_handler: lexik_jwt_authentication.handler.authentication_success
#failure_handler: lexik_jwt_authentication.handler.authentication_failure
#guard:
# authenticators:
# - lexik_jwt_authentication.jwt_token_authenticator
main:
anonymous: true
access_control:
- { path: ^/api/authentication_token, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/graphql, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/form/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/, roles: IS_AUTHENTICATED_FULLY }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
在正式的api平台文档中,没有使用基于会话的登录的消息,我觉得很奇怪。
谢谢
答案 0 :(得分:0)
您需要删除stateless: true
或将其更改为stateless: false
stateless
配置参数可防止Symfony尝试执行以下操作: 将身份验证信息存储在会话中
对我来说,其他所有东西看起来都很不错,但是,如果这不能解决您的问题,您是否可以将随401
响应代码返回的任何消息添加到您的任务中?