使用SpringSecurity时是否需要过滤器?

时间:2018-07-09 23:25:55

标签: spring spring-security

我有一个使用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。

2 个答案:

答案 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的过滤器。