0
A
回答
1
從spring-security 3.2 docs(也適用於version 4.0.0):
在成功切換,用戶的SecurityContext將被更新,以反映指定的用戶,也將包含其中包含原始用戶的額外SwitchUserGrantedAuthority。在切換之前,將檢查用戶是否已經被切換,並且將退出任何當前切換以防止「嵌套」切換。
所以,你必須切換用戶,當你調用後:
request.getUserPrincipal().getAuthorities()
檢索登錄的用戶,它將包含當前USER
和以前ADMIN
用戶的當局。前一個用戶的權限將在SwitchUserGrantedAuthority
實例中。
我在我的代碼中做的是驗證當前用戶是否有一些SwitchUserGrantedAuthority
在其權限中,並向該用戶添加屬性,因此客戶端知道我以管理員身份登錄,但已切換用戶。我使用了這個功能,所以我可以顯示一個按鈕,從該用戶註銷並返回到管理員頁面。
1
我解決它在以下方式:
public User getAdminLoggedAsUser() {
try {
return (User) (((SwitchUserGrantedAuthority) (SecurityContextHolder.getContext().getAuthentication().getAuthorities().toArray()[1]))
.getSource().getPrincipal());
} catch (IndexOutOfBoundsException e) {
return null;
}
}
IndexOutOfBoundsException
在沒有管理員登錄的用戶,bacause在這種情況下,不會有數組中SwitchUserGrantedAuthority
被拋出。
相關問題
- 1. 管理員更改主題
- 2. 管理magento中的管理員帳戶
- 3. 允許用戶/管理員自己更新內容管理
- 4. Wordpress將用戶更改爲管理員
- 5. 與管理員或用戶登錄php
- 6. AuthLogic管理員用戶和隱藏非管理員的管理鏈接
- 7. 谷歌管理員非管理員用戶的SDK
- 8. Drupal:來自管理員/管理員的用戶評論
- 9. 管理員用戶的MVC用戶管理
- 10. 早期Django管理員註銷
- 11. Django管理員用戶
- 12. 用管理員帳戶
- 13. 如何限制活動管理員只有管理員用戶?
- 14. OSGi:條件許可管理員或用戶管理員
- 15. 允許管理員製作其他管理員用戶導軌
- 16. Laravel:如何區分普通用戶,管理員和管理員
- 17. 管理用戶管理與設計
- 18. 本地管理員組中的SharePoint場管理員帳戶
- 19. 管理員和非管理員帳戶的Restful api設計
- 20. 流星:用戶帳戶管理和創建由管理員只
- 21. 使用ParseRoles管理組中的管理員用戶角色
- 22. 幫我重構我的管理員用戶的意見與非管理員用戶的意見
- 23. 由管理員在軌道上的紅寶石管理用戶
- 24. runas管理員和具有管理權限的runas用戶
- 25. Cancan +設計,讓管理員管理用戶的最佳方式
- 26. 管理員用戶批准來自用戶的SQL更改
- 27. 通過無管理員用戶帳戶
- 28. Firebase管理員和用戶帳戶
- 29. 檢測管理員帳戶
- 30. PHP管理員帳戶
優秀,我會試試看 – abiieez 2014-11-22 07:06:20