簡體   English   中英

春季安全性:需要有關如何處理GrantedAuthority的建議

[英]Spring Security: Advice needed on how to handle GrantedAuthority

對於Spring Security應用程序中的GrantedAuthority對象,我感到擔心。 我正在尋找一種處理問題的好方法。 首先,我要描述我的關注,如果有任何事實錯誤,請毫不猶豫地指出,我將非常感激。

Spring Security使用GrantedAuthority實例充當應用程序不同部分中的授權令牌。

默認情況下,GrantedAuthority可以將自己顯示為字符串。 如果方法使用@Secured確保當HttpServletRequest的請求程序檢查為IF(“ROLE_NAME”),網址的使用 Spring XML配置或安全 (request.isUserInRole(“ROLE_NAME”)){..}它總是您用來指定要檢查的權限的字符串。

我想知道在應用程序的多個位置使用靜態字符串的含義。 如果更改了角色名稱,則開發人員必須查找所有舊字符串並進行更新。 如果缺少字符串,則不會出現編譯時錯誤,而只會在運行時出現問題。

在Spring Security應用程序中處理GrantedAuthority對象時,根據您的最佳方法是什么? 您的解決方案有什么優點和缺點?

首先,如果可能的話,僅在應用程序的特定位置(例如,請求開始處的HTTP攔截器)進行檢查,並且僅使用上述方法之一。 這是一個好習慣,因為您將能夠權威地知道用戶被授權的時間。

如果無法做到這一點,請為角色名稱使用枚舉,並且僅在枚舉上進行比較。 因此,如果您想在應用程序中找到所有用法,這是一個簡單的搜索。

我在這里看不到大問題。 GrantedAuthority更改密鑰的可能性很小。 只是不要將您的角色命名為ROLE_A。

另外,我個人更喜歡XML安全性配置而不是注釋。 通常,將任何相關配置都放在一個地方看起來是個好主意。

在Spring和其他框架(尤其是動態語言)中,使用了“ Convention over Configuration”。 如果您可以自由定義角色名稱,則可以輕松地發現需要更多的代碼行。

因此,請遵守約定。 始終使用以下3個角色ROLE_ANONYMOUS,ROLE_ADMIN和ROLE_USER。 如果需要另一個,請相應命名並在所有場合下使用。 文檔很重要。

還導入了單元測試。 如果編譯器未捕獲到錯誤,它將為您提供幫助。

暫無
暫無

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

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