gpt4 book ai didi

servlets - Spring 安全 3.0 : How do I specify URLs to which a custom filter applies?

转载 作者:行者123 更新时间:2023-12-04 15:04:27 24 4
gpt4 key购买 nike

我正在使用带有 JSP 的 Spring Security 3.0。我创建了一个 RequireVerificationFilter,它将未经验证的用户重定向到“验证您的电子邮件”页面。

我将过滤器添加到 spring 安全过滤器堆栈的最后一个位置,如下所示:

我的 app-config.xml 中的 Bean 定义:

<bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />

过滤器添加到我的 security-config.xml 中的 spring 安全过滤器列表:
<custom-filter ref="requireVerificationFilter" after="LAST" />

过滤器有效,但它过滤自己的重定向 URL。也就是说,过滤器将未经验证的用户重定向到/access/verify,但该 URL 也被过滤器捕获,它会无限地尝试重定向。

我尝试使用 <filter-mapping>标记来限制这个新过滤器适用的 URL,但这似乎不像我想象的那样工作。这是我添加的 web.xml 条目:
    <filter>
<filter-name>requireVerificationFilter</filter-name>
<filter-class>com.ebisent.web.RequireVerificationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requireVerificationFilter</filter-name>
<url-pattern>/account/*</url-pattern>
</filter-mapping>

我通读了 spring 安全文档中的“添加自己的过滤器”,但没有找到答案。

我的问题是,如何指定我的过滤器适用于哪些 URL?

更新:

我通过指定过滤器本身允许的 URL 来实现这一点。这对我来说很好用,但如果有更好/更“有弹性”的方法来做到这一点,我会很高兴听到它。

最佳答案

您应该使用 org.springframework.security.web.FilterChainProxy为了这。属性过滤器应该只包含 none :

<http ...>
<custom-filter ref="requireVerificationFilterChain" after="LAST" />
</http>

<b:bean id="requireVerificationFilterChain" class="org.springframework.security.web.FilterChainProxy">
<filter-chain-map request-matcher="ant">
<filter-chain pattern="/account/*" filters="requireVerificationFilter"/>
</filter-chain-map>
</b:bean>
<b:bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />

关于servlets - Spring 安全 3.0 : How do I specify URLs to which a custom filter applies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com