Spring Security 3.0:如何指定自定义过滤器应用的 URL?

2023-11-23

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

我将过滤器添加到了 Spring Security 过滤器堆栈的最后位置,如下所示:

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

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

过滤器添加到我的 security-config.xml 中的 spring security 过滤器列表中:

<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 Security 文档中的“添加自己的过滤器”,但没有找到答案。

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

UPDATE:

我通过指定过滤器本身允许的 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" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Security 3.0:如何指定自定义过滤器应用的 URL? 的相关文章

随机推荐

  • “6k 浏览次数”是什么意思以及如何在 PHP 中格式化该数字

    6k 浏览次数 是什么意思以及如何在 PHP 中格式化这个数字 k是缩写基洛前缀并表示千 所以6k就是六千 您可以使用以下除法函数来格式化数字 function format number prefixes kMGTPEZY if numb
  • SQL Server MERGE + 连接其他表

    我在数据库项目中使用 MERGE 语句从静态值集中填充参考数据 如下所示 MERGE INTO dbo User AS TARGET USING VALUES email protected My Name AS SOURCE UserNa
  • 这是在 C++ 中实现有界缓冲区的正确方法吗?

    Closed 这个问题是无关 目前不接受答案 我正在开发一个程序 该程序处理多个线程访问 存入和从有界缓冲区容器中取出的问题 我注意到线程的一些主要问题 并怀疑我的缓冲区在某处部分或根本不正确 为了确保我知道我在做什么 我希望检查一下我的缓
  • 通过 HTML/PHP 使用 htaccess 自定义登录

    我正在开发一个网站 该网站的目录受 htaccess 保护 我想创建一个自定义登录页面 而不是依赖浏览器默认页面 有人对此有经验吗 我想通过 HTML 表单进行连接 有人觉得可能吗 Thanks 是的 这是可能的 但您不应该使用 htacc
  • 在视图中显示当地时间

    在 config application rb 中 我的文件中有 config time zone UTC 不带引号 我假设这是为了将输入到视图中的用户时间转换为存储在数据库中的 UTC 我的问题是 如何将数据库中的 UTC 值转换为用户的
  • 创建 iOS/OSX 框架:在分发给其他开发人员之前是否有必要对其进行协同设计?

    我正在学习如何创建 iOS 和 OSX 框架 让我们以 iOS 为例 到目前为止 以下步骤对我有效 使用 sdk iphonesimulator 和 Build 操作的 xcodebuild 框架 使用 sdk iphoneos 和 Bui
  • 使用 iOS hooks 将照片发布到 Instagram

    我在 iOS 应用程序中使用以下代码来使用 Instagram iPhone 挂钩将照片发布到 Instagram 我只希望 打开方式 菜单有 Instagram 应用程序 没有其他应用程序 但就我而言 Camera 也出现了 如何限制 I
  • 在 slime REPL 中使用 clojure.contrib 函数

    我想在 REPL 的 slime 中使用 clojure contrib trace 命名空间中的函数 我怎样才能让史莱姆自动加载它们 一个相关的问题 如何将特定的命名空间添加到正在运行的 repl 中 在 clojure contrib
  • 尝试使用 ImageMagick 将 200 个 jpg 文件转换为 mp4。一遍又一遍地收到相同的错误

    我正在尝试将 200 个 ppm 文件中的 jpg 文件转换为一个 mp4 文件 在与 jpg 文件相同的目录中 我运行了以下代码 convert delay 6 quality 95 test ppm movie mp4 并收到此错误消息
  • 将参数列表传递给 shell 中的命令

    如果我有一个文件列表说file1 file20 如何运行以文件列表作为参数的命令 例如myccommand file1 file2 file20 如果你的列表在你的参数向量中 也就是说 如果你从以下内容开始 yourscript file1
  • 如何应用 ndimage.generic_filter()

    我正在尝试学习 ndimage 但不知道如何通用过滤器 功能有效 文档提到用户函数将应用于用户定义的足迹 但不知何故我无法做到 这是示例 gt gt gt import numpy as np gt gt gt from scipy imp
  • 如何从视图控制器以编程方式绘制一条线?

    我有一个UIViewController 如何在以编程方式创建的视图之一中画一条线 有两种常见的技术 Using CAShapeLayer 创建一个UIBezierPath 将坐标替换为您想要的任何坐标 UIBezierPath path
  • 在 WCF 测试客户端 (WcfTestClient.exe) 中按字母顺序列出服务操作

    我经常使用WCF测试客户端 不幸的是 该工具不按字母顺序排序 也不按 出现顺序 在服务合同类中声明操作的顺序 排序 如果有很多操作 那么很难找到具体的操作 有没有办法强制 WCF 测试客户端按字母顺序对操作进行排序 默认排序从何而来 尽管似
  • 使用自适应语法[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在尝试实现一种语法可以动态更改的语言 或语言族 我没有找到可以作为研究案例的例子 您能给我一些在现实世界 甚至是学术界 中实际使用的参考吗 使用
  • 如何增加 freebase API 结果限制

    我在 freebase 的文档中找不到任何相关内容 但他们似乎将结果数量限制为 100 例如 type base popstra celebrity name null 仅返回 100 个结果 而 type base popstra cel
  • 如何可视化堆转储?

    我们使用 golang 开发了一个服务器 它将接收并发请求并处理请求 创建大对象 树 然后发回回复 但这些对象不会被垃圾回收 所以我决定分析内存中的对象 首先 我编写了一个简单的程序 package main import fmt io i
  • 64 位领域中的堆碎片

    过去 当我研究长期运行的 C 守护进程时 我必须处理堆碎片问题 为了避免耗尽连续的堆空间 需要保留大量分配池之类的技巧 对于 64 位地址空间来说这仍然是一个问题吗 性能对我来说不是一个问题 所以我更愿意简化我的代码 不再处理缓冲池之类的事
  • 在 Emacs 中将光标移动到 12 个月旋转日历上的日期的算法

    GOAL 此线程的目标是创建两 2 个数学公式 以替换函数中 lawlist 的长手解lawlist calendar cursor to visible date 以下 故事问题 Emacs 中现在存在一个 12 个月的日历 每次向前和向
  • 正则表达式用逗号分隔千位并保留两位小数

    我最近在回答另一个 StackOverflow 问题时想到了这段代码 基本上 在模糊时 此代码将正确地以千位逗号分隔 并将小数点保留为两位数 就像美元的书写方式 7 745 56 我想知道是否有更简洁的方法使用正则表达式到 分隔并截掉多余的
  • Spring Security 3.0:如何指定自定义过滤器应用的 URL?

    我正在将 Spring Security 3 0 与 JSP 结合使用 我创建了一个 RequireVerificationFilter 它将未经验证的用户重定向到 验证您的电子邮件 页面 我将过滤器添加到了 Spring Security