使用 Spring 表达式语言配置访问控制,要实现这一功能的直接方式是在<http>配置元素上添加 use-expressions 属性:
<http auto-config="true" use-expressions="true">
这样就会在投票器中自动增加一个投票器:org.springframework.security.web.access.expression.WebExpressionVoter
但是,如果显示声明了accessDecisionManager,则需要手工加上这个投票器,参考:http://hanqunfeng.iteye.com/blog/1155226
我们以此为基础进行配置:
1.声明WebExpressionVoter
<!-- 启用表达式 为了后面的投票器做准备 --> <beans:bean class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler" id="expressionHandler"/> <beans:bean class="org.springframework.security.web.access.expression.WebExpressionVoter" id="expressionVoter"> <beans:property name="expressionHandler" ref="expressionHandler"/> </beans:bean>
2.在accessDecisionManager中增加WebExpressionVoter
<beans:bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased"> <beans:property name="decisionVoters"> <beans:list> <beans:bean class="org.springframework.security.access.vote.RoleVoter" /> <beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter" /> <beans:bean class="com.netqin.common.security.DynamicRoleVoter" /> <beans:ref bean="expressionVoter"/> </beans:list> </beans:property> </beans:bean>
3.在http标签中增加use-expressions="true"
4.修改拦截规则为SpEL表达式
<intercept-url pattern="/demo.do*" access="authenticated" /> <intercept-url pattern="/**/*.do*" access="hasRole('HODLE')" />
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"
相关推荐
- **基于表达式的访问控制 (ABAC)**:使用SpEL(Spring Expression Language)表达式来定义更复杂的权限规则。 6. **免登陆实现** - Spring Security提供了Remember-Me服务,允许用户在一定时间内无须重新登录。...
此外,4.2.0版本支持表达式式访问控制,如`@Secured`和`@PreAuthorize`注解,允许开发者使用SpEL(Spring Expression Language)动态设置访问规则。 3. **过滤器链(Filter Chain)**:Spring Security的核心是过滤...
4. **Expression-Based Access Control (EBAC)**:Spring Security 4.0.3引入了基于表达式的访问控制,允许开发者使用SpEL(Spring Expression Language)来定义访问控制规则,这提供了更灵活的权限控制方式。...
《Spring Security 3.x 官方文档》是Java开发者学习Spring Security框架的重要参考资料,它以中文版的形式提供了全面且深入的指南。这份文档主要涵盖了Spring Security的核心概念、配置和使用方法,旨在帮助开发者...
6. **Expression-Based Access Control (ELAC)**: SpringSecurity支持基于表达式的访问控制,通过SpEL(Spring Expression Language)来定义访问规则,使得授权更加灵活。 7. **Remember Me** 服务:允许用户在关闭...
2. **Expression-Based Access Control**(基于表达式的访问控制):Spring Security支持使用SpEL(Spring Expression Language)进行复杂的访问控制表达式定义,这在`org.springframework.security.access....
《实战Spring Security 3.x:快速构建企业级安全》是一本深入探讨Spring Security框架的实践指南,由知名技术专家罗时飞编著。Spring Security是Java领域中广泛使用的安全框架,它为企业级应用提供了全面的安全解决...
在Spring Security 3.x版本中,这个框架提供了许多改进和新特性,旨在保护基于Spring的应用程序免受安全威胁。第五章通常会深入讲解实际应用中的具体示例,帮助开发者理解如何在项目中集成和配置Spring Security。 ...
7. **权限表达式**:使用Spring Expression Language (SpEL) 来表达更复杂的授权逻辑,如`hasRole()`和`hasPermission()`。 8. **自定义权限增强**:如果需要更细粒度的控制,可以实现自定义的AccessDecisionVoter...
SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作对象图。在3.2.17版本中,SpEL增强了对集合操作的支持,可以方便地在表达式中进行条件判断和逻辑运算。 8. **测试支持** Spring Test模块提供了对单元...
7. **Spring Expression Language (SpEL)**:Spring Security 3.0.5.RELEASE可能利用了SpEL进行访问控制表达式的编写,使得动态访问控制成为可能。 8. **异常处理**:框架内置了处理安全相关的异常机制,如未授权...
这个"springSecurityTest.zip"文件是一个IDEA(IntelliJ IDEA)与MAVEN项目,设计用于帮助初学者理解并入门Spring Security。下面将详细阐述Spring Security的主要概念和其在实际开发中的应用。 首先,Spring ...
4. **表达式式访问控制(Expression-Based Access Control, ECB)**:SpringSecurity允许使用SpEL(Spring Expression Language)进行细粒度的访问控制,例如`@PreAuthorize`和`@PostAuthorize`注解,可以指定方法...
SpEL是Spring框架中的强大表达式语言,5.0版本提供了更多功能和改进,增强了在运行时查询和操作对象模型的能力。 9. **Spring Security增强**: 对Spring Security的整合也有所提升,提供了更强大的身份验证和...
6. **Spring-Expression Language (SpEL)**: `spring-expression-4.2.4.RELEASE.jar`是Spring表达式语言,它提供了一个强大的表达式语法来查询和操作对象图。SpEL可以在运行时评估表达式,对对象属性进行动态访问或...
5. **权限表达式**:使用Spring Security的`ExpressionBasedAccessDecisionManager`结合`SpEL (Spring Expression Language)`,可以在URL、方法等安全元数据上定义权限表达式。 6. **配置SecurityConfig**:在...
5. **Spring Expression Language (SpEL)**:Spring3.X引入了SpEL,一种强大的表达式语言,可用于运行时查询和操作对象图。 6. **REST支持**:Spring3.X增强了对RESTful服务的支持,通过`@RequestMapping`等注解,...
SpEL是Spring提供的强大表达式语言,4.1.4.RELEASE版本增强了其功能,允许在运行时动态评估表达式,为Bean属性绑定、方法调用等提供便利。 6. **AOP增强** 在4.1.4.RELEASE中,AOP的切面定义更加灵活,支持@...
- **表达式式访问控制(Expression-Based Access Control)**:3.1引入了基于Spring Expression Language (SpEL)的访问控制,允许更灵活的权限表达。 - **Remember-Me服务增强**:提供了更安全的remember-me功能,...