您的位置:首页 > 编程语言 > Java开发

Spring Security学习

2016-07-19 09:08 190 查看
最近要用到Spring security oauth2,基于Spring Security,但是我连Spring Security都没有用过啊,于是先开始学它。
入口是一个filter。
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

正如网上很多人说的那样,这个过滤器只是一个代理,他有一个targetBeanName属性,在过滤器doFilter方法中,从spring容器找到了名为targetBeanName的bean,所以真正使用的是spring容器中的名为targetBeanName的过滤器。targetBeanName默认就是我们在web.xml里面配置的,即springSecurityFilterChain。
然后spring容器需要有这个bean才行啊,我们知道spring容器是通过一个listener启动的。
org.springframework.web.context.ContextLoaderListener 因为listener的加载比filter早,所以需要用到bean的时候已经存在。
当spring读取配置文件的时候,如果遇到http元素,就会创建springSecurityFilterChain过滤器。
可以看SecurityNamespaceHandler这个类。
parsers.put(Elements.HTTP, new HttpSecurityBeanDefinitionParser());这句话就创建了一个HttpSecurityBeanDefinitionParser解析器,然后这个解析器的parse方法就注册了springSecurityFilterChain。
之后就创建了一大堆过滤器用来拦截请求什么的。。。
一些学习资料 http://www.mossle.com/docs/springsecurity3/html/springsecurity.html http://www.mossle.com/docs/auth/html/ch101-filters.html http://www.cnblogs.com/davidwang456/p/4521955.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: