当我们使用web.xml
添加spring securityfilter时,以下是声明
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
我们也必须
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
我的问题是:
为什么我们需要定义ContextLoaderListener
(我知道它会创建ROOT application context
而DispatcherServlet
会创建child application context
)
当我们宣布springSecurityFilterChain
时?
我的理解是:
1)在幕后,DelegatingFilterProxy
将委托给名为“springSecurityFilterChain
”的bean(值filter-name
属性)
2)这个bean(springSecurityFilterChain
)和(FilterChainProxyBean
最终将请求路由到spring security中的不同过滤器)是否会被创建
由于ROOT application Context
创建了ContextLoaderListener
,因此创建了ROOT application context
?因此我们需要ContextLoaderListener
?
如果是这种情况,弹簧靴如何处理弹簧安全?
因为Spring引导只需要在pom.xml
中添加spring security依赖项,所以一切正常如下 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
在类路径中添加DispatcherServlet
后,spring boot会创建spring-boot-starter-web
。
那么,如果没有ContextLoaderListener
,春季安全如何运作?