2017-03-19 72 views
-1

Spring Security具有Principal和GrantedAuthority的基本思想。我已經實現了Spring Security並閱讀了這個stackoverflow,並且在基本層次上理解「ROLE」不過是以「ROLE_」爲前綴的GrantedAuthority。Spring安全域模型授權

我不明白的是爲什麼要把這個約定放在第一位呢?爲什麼@PreAuthorize("hasRole('XYZ')")等於@PreAuthorize("hasAuthority('ROLE_XYZ')")

像這樣隔離授權機構有什麼特別之處?目的是什麼?

此外,將這些「角色」應用於域模型的特定實例的最佳約定是什麼?以一個跟蹤項目的系統爲例,您希望明確授予用戶查看和編輯某些項目的權限。我可以創建ROLE_EDIT_PROJECT和ROLE_VIEW_PROJECT,但這是應用程序範圍內的。你會在哪裏與一個特定的項目建立一個角色的關係?一個連接表?你甚至會將Spring Security引入到這個中,或者在你的應用程序中從頭構建這種類型的安全性?

回答

1

不幸的是我不知道爲什麼會使用這個約定,可能只是我猜測的遺留代碼。

對於您的問題的第二部分,我會建議使用「hasPermission(project,'view')」並定義您自己的PermissionEvaluator

更多的信息可以發現here