本文在之前的springMVC的基础上加上spring security模块,这里使用java config和xml结合的方式来配置。
我觉得spring配置最有效的方法都是先从xml学起,然后在去学对应的java config,这里也不例外。在学xml配置过程中也是从易到难,一步步替换框架的部分。
1.注册FilterProxy
注册filterproxy有两种方法,一种是基于web.xml的配置,还有一种是创建一个类继承AbstractSecurityWebApplicationInitializer,这种最简单。
注册这个有什么用呢?不管我们通过web.xml还是通过AbstractSecurityWebApplicationInitializer的子类来配置DelegatingFilterProxy,它都会
拦截发往应用中的请求,并将请求委托给ID为springSecurityFilterChain bean。结合dispatcherServlet,下图是我自己理解的一个过程:
当请求到来的时候首先会被dispatcher servlet捕获,然后dispatcher servlet会去看谁能满足这个请求。(甚至我觉得security的优先级还要大一点,他会先去security filter中去找,找不到了再去controller中)。我们的security filter一般是在security框架中声明的,要想我们的dispatcher servlet能发现他,就要靠filterProxy来帮忙。
为什么要做这样的设计呢?因为我们的security框架不止spring提供的啊,所以这样做实现了security module的可插拔性。
2.security config
2.1 最基本的配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.or