我正在 Spring Boot 中编写一个 Web 应用程序,它有一个过滤器,该过滤器必须在 spring 的安全过滤器之后执行。
我已经通过 java config 配置了我的过滤器链,并将我的自定义过滤器的顺序设置为高于 spring security 的值。在 Tomcat 上运行应用程序时,这按预期工作;但是,这在 WebLogic 12c 中不起作用。 WebLogic 执行过滤器链的方式与 Tomcat 执行它的方式相反(和/或反之亦然)。
有没有人遇到过这种特殊的怪癖?有没有办法让 WebLogic 像 Tomcat 那样工作?
我的代码:
final FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter());
registration.setOrder(-99); // spring security's is -100
在 Tomcat 上,这个 MyFilter 在安全过滤器之后触发。在 WebLogic 中,MyFilter 在安全过滤器之前触发。例如,如果我将 setOrder
的值更改为 -101,那么它将适用于 WebLogic 但不适用于 Tomcat。
我想根据上下文在两个应用服务器上运行该应用程序,因此我需要弄清楚如何让它工作。
最佳答案
WebLogic 中存在错误:“20493506:WLS 12.1.2 - Servlet 3 addFilter 添加过滤器的顺序错误”。
Spring Boot 团队是 made aware of this在一年前。不幸的是,Spring Boot 对此无能为力。希望 15 个月以上的时间足以让 Oracle 发布一个可以应用到 Weblogic 安装的修复程序。
关于spring-mvc - Spring Boot 过滤器顺序 : WebLogic 12c vs Tomcat 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162416/