我在我的应用程序中有一个基本的表单登录身份验证,我使用 AuthenticationHandlerInterface 设置了一个处理程序,其中我在 onAuthenticationSuccess() 方法中设置会话变量。
问题是当我切换到另一个用户(使用 ROLE_ALLOWED_TO_SWITCH)时,我的处理程序不再被调用,并且我之前设置的会话变量仍然是切换前的用户。
例子 :
- 使用用户 X 登录
- 将 session var myVar 设置为 X->someAttribute (在身份验证处理程序内)
- 切换到用户 Y
- 未调用处理程序:myVar 保持相同的值
(我知道 myVar = X->someAttribute 不是一个很好的例子,因为我已经可以从安全令牌对象访问它,但这是为了简化问题)
谢谢
编辑:security.yml 的摘录
firewalls:
main:
pattern: ^/
anonymous: ~
switch_user: { role: ROLE_ADMIN, parameter: _switch }
form_login:
provider: sso
success_handler: authentication_handler
login_path: /login
check_path: /login_check
logout:
path: /logout
target: /home