我有一个使用SpringSecurity的基于Spring的项目。这是我的配置bean:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// just default options are fine
}
}
我的问题是:这样web.xml
文件中必须包含过滤器定义吗?
<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>
或者如果我使用的是足够新的Spring版本,是否应该没有它?
我的应用服务器是Wildfly 10。
答案 0 :(得分:1)
从Spring Security 4开始,您现在可以将基于Java的配置用于您的Security,因此web.xml
已过时。
答案 1 :(得分:1)
Spring Security通过应用Servlet过滤器来实现安全性。所以是的,过滤器是强制性的。如reference guide中所述,只有当您不执行独立应用程序或反应式Web应用程序中的servlet安全性时,才不需要它。
当您使用Servlet 3.0容器时,可以使用Spring Security提供的支持类使注册过滤器更加容易。请参阅参考指南的this section。您可以使用AbstractSecurityWebApplicationInitializer
为您注册过滤器。
如果您使用的是较旧的servlet容器,则仍然可以使用web.xml
来执行相同的操作。无论哪种方式,都需要一个名为springSecurityFilterChain
的过滤器。