在我的應用程序中,我可以在後端更改用戶權限和角色。更改用戶權限後強制重新認證
當用戶登錄並刪除用戶角色時,用戶仍然可以訪問他實際上不允許再訪問的內容,因爲他缺少角色。只有當用戶使用註銷/登錄重新進行身份驗證時,更改纔會生效。
所以我的問題是,我可以訪問登錄用戶(不是我)的會話嗎?我知道我可以訪問自己的會話並銷燬它,這迫使我再次登錄。但我想獲得登錄的任何用戶的會話。這可能嗎?我找不到任何資源。
我使用PdoSessionStorage與symfony2.1和fosuserbundle。
在我的應用程序中,我可以在後端更改用戶權限和角色。更改用戶權限後強制重新認證
當用戶登錄並刪除用戶角色時,用戶仍然可以訪問他實際上不允許再訪問的內容,因爲他缺少角色。只有當用戶使用註銷/登錄重新進行身份驗證時,更改纔會生效。
所以我的問題是,我可以訪問登錄用戶(不是我)的會話嗎?我知道我可以訪問自己的會話並銷燬它,這迫使我再次登錄。但我想獲得登錄的任何用戶的會話。這可能嗎?我找不到任何資源。
我使用PdoSessionStorage與symfony2.1和fosuserbundle。
使您的用戶類實現Symfony\Component\Security\Core\User\EquatableInterface
。
如果您從isEqualTo()
方法返回false
,用戶將被重新認證。使用該方法僅比較那些更改時應強制重新認證的屬性 - 您的案例中的角色。
+1好吧,我明白這一點。我必須在哪裏進行此項檢查?我必須在每個請求上都做到這一點? – 2013-02-27 18:03:46
只需讓你的用戶類實現接口。你將被迫執行'isEqualTo()'方法。其餘由Symfony處理。 – 2013-02-27 18:23:50
太棒了!) – 2013-02-27 18:47:35
您可以通過以下的方法相似,我沒有得到解決此問題:
嗯看起來很有趣但很複雜。這是你正在開發的某種幫助臺嗎? – 2013-02-27 17:18:59
@artworkad其實並不複雜,它使用基本的symfony2組件,如服務容器,安全上下文和請求對象來決定如何處理權限。 – JamesHalsall 2013-02-27 17:32:10
@Jaitsu,Symfony內置的解決方案非常簡單,你會歇斯底里地笑。看到我的答案。 ;) – 2013-02-27 17:55:24
也在這裏問,沒有答案。 http://stackoverflow.com/questions/14184484/how-to-administratively-invalidate-a-session-that-used-remember-me-option – MDrollette 2013-02-27 16:14:33
@MDrollette我覺得這將會得到回答。我認爲唯一的解決方案可能是一個自定義會話管理器 – 2013-02-27 16:44:28
它只是一個將用戶ID和會話ID一起存儲在會話表中的問題。聽起來不是特別困難,但我不確定最好的方法。 – MDrollette 2013-02-27 16:52:43