spring security http intercept-url access配置所有的属性值穷举列表

spring | 2019-09-13 10:02:39

通常在在使用spring security时,会做如下配置:


<http>
<intercept-url pattern="/login.jsp" access="hasRole('ROLE_ANONYMOUS')" />
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</http>


很明显access的值表示有什么权限才能访问。那么access有哪些值呢?

Spring Security  提供的 SpEL 方法和伪属性在以下的表格中进行了描述。要注意的是没有被标明“ web only ”的方法和属性可以在保护其他类型的资源中使用,如在保护方法调用时。示例表示的方法和属性是使用在 <intercept-url> 的 access 声明中。



方法

  

Web only?

描述

示例

hasIpAddress

  

(ipAddress)

  

Yes

用于匹配一个请求的 IP 地址或一个地址的网络掩码

access="hasIpAddress('

  

162.79.8.30')"

  

access="hasIpAddress('

  

162.0.0.0/224')"

  

hasRole(role)

No

用于匹配一个使用 GrantedAuthority 的角色(类似于 RoleVoter 

access="hasRole('ROLE

  

USER')"

  

hasAnyRole(role)

No

用于匹配一个使用 GrantedAuthority 的角色列表。用户匹配其中的任何一个均可放行。

access="hasRole('ROLE_

  

USER','ROLE_ADMIN')"


需要注意的是使用has这些SpEL 表达式,要使用use-expressions 配置为true。

<http auto-config="true" use-expressions="true">

当然默认就是true,可以使用表达式语言。


除了以上表格中的方法,在 SpEL 表达式中还有一系列的方法可以作为属性。它们不需要圆括号或方法参数。


方法

  

Web only?

描述

示例

permitAll

No

  

任何用户均可访问

access="permitAll"

  

denyAll

  

NO

  

任何用户均不可访问

access="denyAll"

  

anonymous

NO

匿名用户可访问

  

access="anonymous"

  

authenticated

NO

检查用户是否认证过

access="authenticated"

  

rememberMe

No

检查用户是否通 remember me 功能认证的

access="rememberMe"

  

fullyAuthenticated

No

检查用户是否通过提供完整的凭证信息来认证的

  

access="fullyAuthenticated"




登录后即可回复 登录 | 注册
    
关注编程学问公众号