1

をデプロイしましたSpring Boot Web application on WildFly 8.1が、問題が発生しました。

アプリケーションをデプロイしたら、FilterRegistrationBeansServlet Filters を登録します。FilterRegistrationBeans は によって順序付けられAnnotationAwareOrderComparator、それらのフィルタはその順序で登録されることを知っています。しかし、アプリケーションにアクセスすると、Undertow は逆の順序でフィルターを呼び出します。

たとえば、Spring Boot が次のようなフィルターを登録する場合:

  • errorPageFilter
  • metricFilter (Spring Boot アクチュエーターから)
  • characterEncodingFilter
  • hiddenHttpMethodFilter
  • springSecurityFilterChain (Spring Security から)

Undertow は、次のようにこれらのフィルターを呼び出します。

  • springSecurityFilterChain
  • hiddenHttpMethodFilter
  • characterEncodingFilter
  • metricFilter
  • errorPageFilter

これらのフィルターの順序を正しく指定するにはどうすればよいですか? 一部のフィルターの順序 ( などorg.springframework.boot.context.web.ErrorPageFilter) がソースにハードコードされていました。指定できません。

4

1 に答える 1

1

これは、宣言されたすべてのフィルターの前にフィルターを挿入するのではなく、FilterRegistrationImpl#addMappingForUrlPatterns で matchAfter が false の場合に発生する Undertow のバグのようです。

于 2014-09-14T21:34:09.947 に答える