out*_*tis 6 servlets spring-security servlet-filters
我正在使用带有JSP的Spring Security 3.0.我创建了一个RequireVerificationFilter,可以将未经验证的用户重定向到"验证您的电子邮件"页面.
我在最后一个地方将过滤器添加到spring安全过滤器堆栈中,如下所示:
我的app-config.xml中的Bean定义:
<bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />
Run Code Online (Sandbox Code Playgroud)
过滤器添加到我的security-config.xml中的spring安全过滤器列表中:
<custom-filter ref="requireVerificationFilter" after="LAST" />
Run Code Online (Sandbox Code Playgroud)
过滤器有效,但它会过滤自己的重定向网址.也就是说,过滤器会将未经验证的用户重定向到/ 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>
Run Code Online (Sandbox Code Playgroud)
我在春季安全文档中阅读了"添加自己的过滤器",但没有找到答案.
我的问题是,如何指定我的过滤器适用的URL?
更新:
我通过在过滤器本身中指定允许的URL来实现此功能.这对我来说很好,但如果有更好/更"弹性"的方式,我会很高兴听到它.
您必须在实际配置 xml 中执行此操作(与<custom-filter ref="requireVerificationFilter" after="LAST" />.
<http ...>
<intercept-url pattern="/access" ... filters="..., requireVerificationFilter, ..." />
<intercept-url pattern="/verify" ... filters="none" />
...
</http>
Run Code Online (Sandbox Code Playgroud)
沿着这些思路,您可以指定要运行的过滤器列表并排除那些不运行的过滤器(“无”表示无)。您不需要将过滤器添加到 web.xml - 仅与 Spring Security 过滤器链内联。
| 归档时间: |
|
| 查看次数: |
6988 次 |
| 最近记录: |