![](/img/trans.png)
[英]How to modify dynamically the roles of the logged user in Spring Security 4?
[英]Spring Security - How to change user roles dynamically?
我有一個關於在運行時動態更改角色的問題。 假設我們有一個社交網絡應用程序(如 Facebook),並且我們使用 Spring 安全進行身份驗證/授權。
當一個人打開他的主頁時,這個人具有管理員角色並且可以用他的主頁做任何事情。 但是,當他訪問另一個朋友的主頁時,他應該只有角色 USER,該角色只能執行一些受限操作(例如,他不能刪除他朋友主頁中的帖子)。 如果我們使用 AuthenticationManagerBuilder 那么我們只能為每個用戶設置一個固定的角色。
任何人都可以幫我解決這個問題嗎?
謝謝你。
我認為你應該過度考慮你的概念。 用戶永遠是用戶。 擁有主頁的用戶是 userWithHomepage,真正的管理員是管理員。
您需要在頁面上檢查 currentUser 是否具有當前頁面的特權 - 並為他提供他在此站點上的角色。
所以“UserWithHomepage”來到他自己的主頁,你檢查:這個用戶在這個網站上有特權嗎? 如果是:在此站點上激活管理功能。 如果您向他的 userContext 添加一個角色,他也可以作為這個角色訪問其他站點。 我認為,這是一個安全漏洞。
因此,只需在您的控制器上設置一個標記或每次檢查,如果用戶有權這樣做,就會發生某些事情(實例化、按鈕單擊等)。
您不應該根據他們正在訪問的頁面更改您的用戶角色。 在您的情況下,在訪問主頁時,您應該檢查用戶是否是主頁的所有者,如果是,請給他編輯/刪除的選項,如果不是,請不要給他們選項(不要顯示用於編輯/刪除的鏈接,如果他們嘗試執行該請求,則拋出異常)。
謝謝大家,實際檢查用戶是否是主頁的所有者正是我們需要做的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.