spring-mvc - Spring Boot 过滤器顺序 : WebLogic 12c vs Tomcat 8

标签 spring-mvc tomcat spring-security spring-boot weblogic

我正在 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/

相关文章:

java - 如何更改 ClientCredentialsResourceDetails 发出的请求的内容类型?

java - 设置管理端口时Spring Boot的执行器不可用

java - Spring Security-允许 GET 但不允许 POST

java - Spring Security 自定义身份验证要求

java - JSP中登录页面 session 超时问题

google-app-engine - 带 Tomcat 的 Google Cloud Endpoints(而不是 Google App Engine)

java - ZKSpring 如何从 Spring MVC Controller 向 ZK zul 传递变量?

java - 使用 Spring 避免数据库轮询的最佳方法

java - 如何将 Ldap 组映射到 Tomcat 角色 (Java)

单个服务器上的 session 集群 Tomcat + terracotta