【问题标题】:Spring security with filter-mapping - Filter not called with dispather tags带有过滤器映射的 Spring 安全性 - 过滤器未使用 dispather 标签调用
【发布时间】:2023-03-08 20:20:01
【问题描述】:

我正在使用 spring security 并且还添加了一个过滤器映射,如下所示。

我的 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>

而web-fragment中定义的filter-mapping是:

<filter-mapping>
    <filter-name>customFilter</filter-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

问题是,登录/注销请求中没有调用“customFilter”。如果我像下面这样添加 url 模式,那么它就会被调用

    <url-pattern>/</url-pattern>

知道为什么没有 url 模式它就不能工作吗?

PS:我无法将“customFilter”与弹簧配置合并,因为弹簧配置可以被覆盖,我不希望他们添加与安全无关的自定义过滤器。

【问题讨论】:

    标签: java spring-security


    【解决方案1】:

    根据 web.xml 部署描述符 documentation&lt;filter-mapping&gt; 元素必须具有 &lt;url-pattern&gt;&lt;servlet-name&gt; 元素。您忽略了这两者,这就是它不起作用的原因

    【讨论】:

    • 但奇怪的是它被其他请求调用了。问题只是登录/注销请求。
    猜你喜欢
    • 2018-06-03
    • 2015-04-01
    • 2015-05-24
    • 1970-01-01
    • 2016-06-25
    • 2016-05-07
    • 2011-05-11
    • 2017-01-17
    • 1970-01-01
    相关资源
    最近更新 更多