在没有AbstractSecurityWebApplicationInitializer的情况下启用Spring Security

时间:2019-05-03 14:23:12

标签: java spring spring-security

我有一个基于Spring的Web应用程序(不是Spring boot),并且正在尝试启用Spring Security。

我可以通过扩展AbstractSecurityWebApplicationInitializer来启用它,并且效果很好。但是我想使用@EnableWebSecurity来做,而不扩展AbstractSecurityWebApplicationInitializer。但是仅此注释不能启用它。有没有办法做到这一点,或者仅此注释解决方案仅适用于Spring Boot?

谢谢。

1 个答案:

答案 0 :(得分:1)

在非引导环境中,您可能正在使用调度程序servlet初始化程序类,例如,扩展AbstractAnnotationConfigDispatcherServletInitializer。您可以这样注册安全过滤器链:

private static void initSecurityFilter(ServletContext servletContext) {
   FilterRegistration.Dynamic securityFilter = servletContext.addFilter("springSecurityFilterChain",
                DelegatingFilterProxy.class);
   final EnumSet<DispatcherType> es = EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD);
   securityFilter.addMappingForUrlPatterns(es, true, "/*");
}

并从onStartup调用它。