【发布时间】:2016-02-11 05:36:43
【问题描述】:
我正在使用 Java 配置并且知道我可以像这样添加自定义过滤器:
@Override
public void onStartup(final ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
DelegatingFilterProxy filter = new DelegatingFilterProxy("springSecurityFilterChain");
filter.setServletContext(servletContext);
filter.setContextAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcher");
servletContext.addFilter("corsFilter", CorsFilter.class).addMappingForUrlPatterns(null, false, "/*");
servletContext.addFilter("springSecurityFilterChain", filter).addMappingForUrlPatterns(null, true, "/*");
}
这工作正常,但感觉就像我在 Spring 的边缘进行黑客攻击。
我想做的是将我的 CORS 过滤器添加到DelegationFilterProxy。
在我的根配置中我添加了:
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public Filter CorsFilter() {
return new CorsFilter();
}
并删除了 onStartup 中自定义过滤器的添加。现在它根本不起作用。
如何将 bean 添加到我的过滤器链并确保首先调用它?
【问题讨论】:
-
我找不到任何东西来确保首先应用 CORS 过滤;你确定这是必要的吗?
-
用于安全端点
-
您的第二个代码 sn-p 应该可以工作。包含类是否使用 @Configuration 注释?
-
是的。我还确保一直在根上下文中
标签: java spring spring-mvc spring-security cors