2012-02-10 6 views
7

FOSUserBundleを使用してユーザーの役割を変更しようとしています。問題は、ユーザーが同時にログに記録されている場合、新しい役割を確認するために再ログオンする必要があることです。リロッグする必要がない遠隔ユーザーの役割を変更する

すべてのソリューションはありますか?

+0

?私は同じ問題に直面しています... –

答えて

-1

1:ファイアウォール設定でswitch_role:trueを有効にする必要があります。 2:次に、ROLE_ADMINの役割を別の役割に切り替えることを許可する必要があります。 3:ちょうど_switch_role = userNameCanonicalへのリンクを作成します

symfonyのセキュリティによってほとんど行われているfosはロール切り替えとは関係ありません。

+0

@Pivasykへの私のコメントを参照してください。ありがとう – Joffrey

0

あなたのコントローラでこれを試してみてください:

$this->get('fos_user.user_manager')->refreshUser($user); 

参照FOS/UserBundle /モデル/ UserManager.php

+0

あなたの答えをありがとう、それは本当に私が探しているものではありません。 私はすでに現在のセッションでユーザーの役割を更新できます。 私がやっていることは遠いユーザーの役割をリフレッシュすることです。 私は管理者で、接続しているユーザーの役割を変更したいとします。彼は新しい役割を見るためにリロッグする必要があります...どうすればそれを避け、即座に変えることができますか? ありがとうございます。 – Joffrey

12

Security Configuration Referenceによると、always_authenticate_before_grantingオプションがあります。それに関する多くの情報はありませんが、私はデータベースからロードするカスタムロールで試してみましたが、それはそのトリックです。新しいリクエストを行うたびに、セキュリティコンポーネントがロールを再ロードするように見えます。

ですから、あなたの役割はでちょうどtrueにこのオプションを設定し、リフレッシュして、ユーザーセッションに再ロードされていることを確認したい場合は、あなたのsecurity.yml:あなたの答えを得た方法

# app/config/security.yml 
security: 
    always_authenticate_before_granting: false 
+0

これは、最新のsymfonyのバージョンでページの処理を倍増させるようです... :( –

+1

データベースIOを増加させますか? – tom10271

関連する問題