具有筛选器映射的 Spring 安全性 - 不使用差异器标记调用筛选器



我正在使用弹簧安全性,并添加了如下所示的过滤器映射。

我的弹簧安全配置是:

<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>元素。您都省略了两者,这就是它不起作用的原因

最新更新