了解Spring Security如何使用角色排序

时间:2017-04-10 16:48:08

标签: grails spring-security

如果在SpringSecurity中正确使用了sortorder,那么SpringSecurityUtil方法的行为如何?例如,ifAnyGranted似乎检查用户是否具有排序顺序低于传递角色的任何角色。

鉴于以下内容:

ROLE_EXEC     sortorder:10
ROLE_MANAGER  sortroder:20
ROLE_EMPLOYEE sortorder:30

//does this mean "has any role with at least the same sortorder as someRole"?
SpringSecurityUtils.ifAnyGranted("ROLE_MANAGER") //would return true for manager or exec?

//does this mean "does not have any role with at least the sortorder of someRole"
SpringSecurityUtils.ifNotGranted("ROLE_EXEC") //would return true for manager or employee?

//does this mean "all roles equal or above all of these"?

SpringSecurityUtils.ifAllGranted("ROLE_MANAGER") // returns true for manager or exec? ? 

1 个答案:

答案 0 :(得分:0)

我不知道sortorder来自哪里,但插件中没有您所描述内容的支持。

您可以轻松定义角色层次结构,但希望能够满足您的需求。它通常用于使@Secured注释更简洁,例如:定义ROLE_ADMIN意味着ROLE_USER,因此您可以允许管理员和用户@Secured('ROLE_USER')而不是@Secured('ROLE_ADMIN','ROLE_USER')

请参阅文档here