アプリに基本的なフォームログイン認証があり、AuthenticationHandlerInterfaceを使用してハンドラーを設定します。この場合、onAuthenticationSuccess()メソッドでセッション変数を設定します。
問題は、(ROLE_ALLOWED_TO_SWITCHを使用して)別のユーザーに切り替えると、ハンドラーが呼び出されなくなり、以前に設定したセッション変数が、切り替える前のユーザーのもののままになることです。
例 :
- ユーザーXでのロギング
- セッション変数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