SpringSecurity3.X--SpEL 表达式

使用 Spring 表达式语言配置访问控制,要实现这一功能的直接方式是在配置元素上添加 use-expressions 属性:

 

这样就会在投票器中自动增加一个投票器:org.springframework.security.web.access.expression.WebExpressionVoter

 

 

但是,如果显示声明了accessDecisionManager,则需要手工加上这个投票器,参考:http://hanqunfeng.iteye.com/blog/1155226

我们以此为基础进行配置:

1.声明WebExpressionVoter

 


	
			
			
	

 2.在accessDecisionManager中增加WebExpressionVoter

 

 


		
			
				
				
				
				
			
		
	

 

 

3.在http标签中增加use-expressions="true"

 

4.修改拦截规则为SpEL表达式

 


 

 

ok,以上就配置完成了。

 

SpEL表达式说明

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

access="hasIpAddress('162.79.8.30')"

access="hasIpAddress('162.0.0.0/224')"

 

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

access="hasRole('ROLE_USER')"

 

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

access="hasRole('ROLE_USER','ROLE_ADMIN')"

 

任何用户均可访问  

access="permitAll"

 

任何用户均不可访问  

access="denyAll"

 

匿名用户可访问  

access="anonymous"

 

检查用户是否认证过 

access="authenticated"

 

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

access="rememberMe"

 

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

access="fullyAuthenticated"

 

在 SpEL 中,使用 and,or 以及 not 作为逻辑操作符,例如:

access="hasRole('ROLE_USER') and fullyAuthenticated"

access="rememberMe or fullyAuthenticated"

你可能感兴趣的:(SpringSecurity)