Spring Security,access =" ROLE_ADMIN" Vs access =" hasAnyRole(' ROLE_ADMIN')

时间:2016-05-29 15:53:01

标签: java spring spring-security

在Spring Security中:

<intercept-url pattern="/api/**" access="ROLE_ADMIN" />

在此行<intercept-url pattern="/api/**" access="hasRole('ROLE_ADMIN')" />

如果我写的话,有什么区别意义:

<intercept-url pattern="/api/**" access="hasAnyRole('ROLE_ADMIN')" />

或:

Cmd + click

1 个答案:

答案 0 :(得分:3)

正如Spring Security documentation所述:

  

hasRole([role]):如果当前主体具有,则返回true   指定role

     

hasAnyRole([role1,role2]):如果当前主体具有任何提供的角色(以逗号分隔的字符串列表给出),则返回true。

此外,在access属性上,documentation声明:

  

访问:列出将存储在的访问属性   已定义的网址FilterInvocationSecurityMetadataSource   模式/方法组合。这应该是以逗号分隔的列表   安全配置属性(,如角色名称)。

但在您的情况下,您将单个元素列表传递给hasAnyRole,所以:

  

存取=&#34; ROLE_ADMIN&#34; Vs access =&#34; hasAnyRole(&#39; ROLE_ADMIN&#39;)

hasRole('ROLE_ADMIN')hasAnyRole('ROLE_ADMIN')相同,都表示当前主体应具有ROLE_ADMIN权限。

&#34;校长&#34; 通常指用户,设备或其他可在您的应用中执行操作的系统。)