`
kobe学java
  • 浏览: 249950 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

spring security遇到的一些问题

 
阅读更多

昨天整理了 maven + jetty的环境,感觉还不错,非常适合自己07年买的本。

使用m2eclipse 插件可以非常方便的添加  依赖和插件,要不然自己手动写是很麻烦的,有点小遗憾,添加依赖时不能多选。

 

今天终于能用eclipse管理maven的 jetty了,可以run,stop,debug。 可以抛弃myeclipse了。

 

下午一直在弄security 2.0的例子,郁闷了好半天。

当加上这句话时 会出错  ,不信你们试试

     <intercept-url pattern="/*" filters="none" />

 

加上 <intercept-url pattern="/**" filters="none" />这个反而没错。

我很无语,还遇到一个问题是:  no bean name springsecurityfilterchain 这个错误,

解决方案:  首先保证有 <http> 标签, 还有可能是applicationContext文件没有找到,

比如当 web.xml 中为  <param-value>classpath*:applicationContext.xml</param-value>

这样时 就会出现上面的问题。

把 * 号去掉后 回复正常。这个可能是 web服务器的问题,有的帖子上让加*,有的不加也没问题。记下来备用。

 

这个问题已经解决了,看了security的源码也弄明白了问题是怎样产生的。
上面的配置应该是可以启动服务器,并且不报错的。
问题出在 filter的执行上。
    首先security是通过一系列的过滤器来进行认证和权限管理的 
    filter处理的顺序请参考其他文章,
    在FilterChainProxy中 有这样一句 getFilters(url);
    这样会根据你配置的 intecepter-url 和filter来进行查询的。
    比如  /login.jsp   filters="none"
          /**          access="role_user"
    当你 访问login。jsp时 getFilters() 就会返回 null
    于是不进行权限控制,任何人都能访问到了。
    其他类似所有的 /admin/** access="role_admin"
    这种都会被 /**来进行匹配,在最后的filter进行权限验证。
    当配置 /*  filters=“none” 时 这样所有的/* 就不会进入 VirtrualFilterChain
    而用户认证,和生成 登录界面都是在 VirtrualFilterChain 中进行生成的,
    这样spring security 就默认的 登录认证,注销等url都不能起作用了


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics