我正在使用弹簧安全性,并添加了如下所示的过滤器映射。
我的弹簧安全配置是:
<http entry-point-ref="httpAuthenticationEntryPoint">
<intercept-url pattern="/**" method="OPTIONS" access="true"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
<form-login
authentication-success-handler-ref="authSuccessHandler"
authentication-failure-handler-ref="authFailureHandler"/>
<logout success-handler-ref="httpLogoutSuccessHandler"/>
<custom-filter before="FORM_LOGIN_FILTER" ref="sessionContextFilter" />
</http>
网络片段中定义的过滤器映射是:
<filter-mapping>
<filter-name>customFilter</filter-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
问题是,登录/注销请求中未调用"自定义过滤器"。如果我像下面这样添加 url 模式,那么它被称为
<url-pattern>/</url-pattern>
知道为什么没有 url 模式它不起作用吗?
PS:我无法将"自定义过滤器"与弹簧配置合并,因为弹簧配置可能会被覆盖,并且我不希望他们添加与安全性无关的自定义过滤器。
根据 web.xml 部署描述符文档,<filter-mapping>
元素必须具有<url-pattern>
或<servlet-name>
元素。您都省略了两者,这就是它不起作用的原因