首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

spring security3的根本配置和使用

2012-09-20 
spring security3的基本配置和使用折腾了一天终于把spring security 3.1.0集成进项目中了,这里特别说明了

spring security3的基本配置和使用
折腾了一天终于把spring security 3.1.0集成进项目中了,这里特别说明了一下版本,因为不同的版本有些用法会存在一些差异。期间遇到了很多问题,记录在这里。
最大的心得是网上的资料只能参考,最重要的文档是spring security自带的tutorial的例子,这里的用法是和你要用到的版本是一致的。



需要补充以下几个问题

1. 注释中提到如果配置了表达式,<intercept-url pattern="/employee/**"access="ROLE_ADMIN" /> 这种形式的配置会报以下异常
java.lang.IllegalArgumentException: Failed to evaluate expression 'ROLE_ADMIN'
org.springframework.security.access.expression.ExpressionUtils.evaluateAsBoolean(ExpressionUtils.java:13)
org.springframework.security.web.access.expression.WebExpressionVoter.vote(WebExpressionVoter.java:34)
org.springframework.security.web.access.expression.WebExpressionVoter.vote(WebExpressionVoter.java:18)
org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:50)
org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:204)

解决办法就是如上配置文件改成hasRole的形式。

2. 关于数据库表和spring security不一致的实现。 表结构大致如下


3. spring security jsp页面的标签库

4. 在jsp页面中使用<sec:authorization>标签时,如果需要判断多个条件的正确写法
老版本的spring security中有这种用法
<sec:authorize access="hasRole('ROLE_XXX) OR hasRole('ROLE_YYY')">

注意配置文件中必须设置use-expressions为true,这在spring security3的文档中说明了的

5. spring security3和sitemesh共同使用的问题(项目中没用到,先记录在这里)
结论是:
与filter mapping的配置顺序有关,spring security3的必须放在sitemesh的前面

热点排行