2012-03-09 10 views
4

ユーザのロールを編集するたびに、ユーザはログアウトして変更を確認する必要があります。もう一度サインインするまで、余分な権限が表示されないため、ユーザーを宣伝する際に問題はありません。ただし、降格が発生すると、ユーザーはセキュリティリスクを課す既存の役割を引き続き維持します。不正な従業員のadminユーザーを取り消しても、ログアウトするまで何か(例えばシステムを妨害するなど)できるようにすることを想像してみてください!FOSUserBundle/Symfony2:ユーザ(現在ログインしているユーザではない)が与えられたユーザのログアウトを強制する

特定のユーザーに関連するすべてのセッションまたはトークンを無効にすることはできますか?ログアウトせずにユーザーの役割を動的に更新する別の方法がある場合、私はそれを聞いてみたいです!

私は現在ログインしているユーザーのセッション/トークンを無効にしようとしていません。

ありがとうございます!

答えて

2

Symfonyはセッション中に_security_match_firewall_nameキーの下にシリアル化されたトークンオブジェクトを格納します。シリアル化を解除し、役割をフィルタリングしてから再度保存することができます。セッション値の読み取り/保存にはPdoSessionStorageを使用できます。ユーザーセッションを追跡するために余分なテーブルを作成する必要があります。

+0

私に正しい方向を指摘してくれてありがとう。セッションテーブルに追加の列を追加して、PdoSessionStorageが使用するセッションIDに関連付けられたユーザーIDを格納することは可能ですか?同様に、セッションIDを指定してトークンオブジェクトを取得する方法はありますか?前もって感謝します! –

+0

これを行うには、PdoSessionStorageクラスを変更する必要があります。対話的なログインリスナーを作成し、 'onSecurityInteractiveLogin'メソッドでセッションIDを取得してテーブルに保存するといいでしょう。たとえば' user_sessions'です。 –

+0

それはおそらく別のデータベースに格納するための最良の方法です。私はまだdbに格納されているセッションの値からセキュリティトークンに戻って戻っていく方法が失われています。 –

関連する問題