【发布时间】:2019-12-14 22:33:08
【问题描述】:
我正在向我们的应用程序添加一个新过滤器。过滤器本身可以工作,但问题是它需要在过滤器链中的另一个自定义过滤器和 spring 抱怨之前出现。
这是我们的 permissions.xml 中的一个示例:
<security:http-basic/>
<custom-filter before="path.to.our.filter.OldFilter" ref="newFilter" />
<custom-filter before="FORM_LOGIN_FILTER" ref="oldFilter" />
</security:http>
<beans:bean id="newFilter" class="path.to.our.other.filter.NewFilter"/>
<beans:bean id="oldFilter" class="path.to.our.filter.OldFilter"/>
这抱怨以下错误:
Caused by: org.xml.sax.SAXParseException: cvc-enumeration-valid: Value 'com.iai.argus.common.jetty_spring.util.BasicAuthUsernameExtractorFilter' is not facet-valid with respect to enumeration '[FIRST, CHANNEL_FILTER, SECURITY_CONTEXT_FILTER, CONCURRENT_SESSION_FILTER, WEB_ASYNC_MANAGER_FILTER, HEADERS_FILTER, CORS_FILTER, CSRF_FILTER, LOGOUT_FILTER, X509_FILTER, PRE_AUTH_FILTER, CAS_FILTER, FORM_LOGIN_FILTER, OPENID_FILTER, LOGIN_PAGE_FILTER, DIGEST_AUTH_FILTER, BASIC_AUTH_FILTER, REQUEST_CACHE_FILTER, SERVLET_API_SUPPORT_FILTER, JAAS_API_SUPPORT_FILTER, REMEMBER_ME_FILTER, ANONYMOUS_FILTER, SESSION_MANAGEMENT_FILTER, EXCEPTION_TRANSLATION_FILTER, FILTER_SECURITY_INTERCEPTOR, SWITCH_USER_FILTER, LAST]'. It must be a value from the enumeration.
我需要一种在旧过滤器和 FORM_LOGIN_FILTER 之前插入新过滤器的方法。我该怎么做?
【问题讨论】:
-
这些是订单/弹簧安全的参考过滤器预定义过滤器
[FIRST, CHANNEL_FILTER, SECURITY_CONTEXT_FILTER, CONCURRENT_SESSION_FILTER, WEB_ASYNC_MANAGER_FILTER, HEADERS_FILTER, CORS_FILTER, CSRF_FILTER, LOGOUT_FILTER, X509_FILTER, PRE_AUTH_FILTER, CAS_FILTER, FORM_LOGIN_FILTER, OPENID_FILTER, LOGIN_PAGE_FILTER, DIGEST_AUTH_FILTER, BASIC_AUTH_FILTER, REQUEST_CACHE_FILTER, SERVLET_API_SUPPORT_FILTER, JAAS_API_SUPPORT_FILTER, REMEMBER_ME_FILTER, ANONYMOUS_FILTER, SESSION_MANAGEMENT_FILTER, EXCEPTION_TRANSLATION_FILTER, FILTER_SECURITY_INTERCEPTOR, SWITCH_USER_FILTER, LAST] -
您不能通过引用另一个自定义过滤器顺序来配置自定义过滤器。您应该说之前/之后/位置预定义的过滤器。所以如果你想在oldFilter之前添加newFilter,你可以尝试在CAS_FILTER之前添加newFilter并调试顺序以确保
-
@PraveenKumarLalasangi 你是对的,把它放在 CAS_FILTER 之前非常适合我的情况。我猜不允许连续使用 2 个自定义过滤器。无论如何,让您的评论成为答案,我会接受它,因为它是我问题的正确解决方案..
-
随意写答案。目前我做不到。无论回答者如何,如何回答都更重要。谢谢