簡體   English   中英

Spring Security - 如何動態更改用戶角色?

[英]Spring Security - How to change user roles dynamically?

我有一個關於在運行時動態更改角色的問題。 假設我們有一個社交網絡應用程序(如 Facebook),並且我們使用 Spring 安全進行身份驗證/授權。

當一個人打開他的主頁時,這個人具有管理員角色並且可以用他的主頁做任何事情。 但是,當他訪問另一個朋友的主頁時,他應該只有角色 USER,該角色只能執行一些受限操作(例如,他不能刪除他朋友主頁中的帖子)。 如果我們使用 AuthenticationManagerBuilder 那么我們只能為每個用戶設置一個固定的角​​色。

任何人都可以幫我解決這個問題嗎?

謝謝你。

我認為你應該過度考慮你的概念。 用戶永遠是用戶。 擁有主頁的用戶是 userWithHomepage,真正的管理員是管理員。

您需要在頁面上檢查 currentUser 是否具有當前頁面的特權 - 並為他提供他在此站點上的角色。

所以“UserWithHomepage”來到他自己的主頁,你檢查:這個用戶在這個網站上有特權嗎? 如果是:在此站點上激活管理功能。 如果您向他的 userContext 添加一個角色,他也可以作為這個角色訪問其他站點。 我認為,這是一個安全漏洞。

因此,只需在您的控制器上設置一個標記或每次檢查,如果用戶有權這樣做,就會發生某些事情(實例化、按鈕單擊等)。

您不應該根據他們正在訪問的頁面更改您的用戶角色。 在您的情況下,在訪問主頁時,您應該檢查用戶是否是主頁的所有者,如果是,請給他編輯/刪除的選項,如果不是,請不要給他們選項(不要顯示用於編輯/刪除的鏈接,如果他們嘗試執行該請求,則拋出異常)。

謝謝大家,實際檢查用戶是否是主頁的所有者正是我們需要做的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM