FOSUserBundle を使用して、ユーザーの役割を変更しようとしています。問題は、ユーザーが同時にログインしている場合、新しいロールを表示するには再ログインする必要があることです。
解決策はありますか?
FOSUserBundle を使用して、ユーザーの役割を変更しようとしています。問題は、ユーザーが同時にログインしている場合、新しいロールを表示するには再ログインする必要があることです。
解決策はありますか?
Security Configuration Referenceによると、オプションがありalways_authenticate_before_granting
ます。それに関する情報はあまりありませんが、データベースからロードするカスタムロールで試してみましたが、うまくいきました。新しいリクエストを行うたびに、セキュリティ コンポーネントがロールをリロードするようです。
したがって、ロールがユーザー セッションで更新および再ロードされることを確認したい場合は、このオプションをtrue
に設定するだけsecurity.yml
です。
# app/config/security.yml
security:
always_authenticate_before_granting: false
コントローラーでこれを試してください:
$this->get('fos_user.user_manager')->refreshUser($user);
FOS/UserBundle/Model/UserManager.php を参照してください。
1: ファイアウォール構成で switch_role: true を有効にする必要があります。2: 次に、ROLE_ADMIN の役割を別の役割に切り替えることができるようにする必要があります。3: ?_switch_role=userNameCanonical へのリンクを作成するだけです
そのほとんどは symfony セキュリティ fos によって行われ、役割の切り替えとは何の関係もありません。