Servlets SpringSecurity3.0:如何指定应用自定义筛选器的URL?
我正在使用SpringSecurity3.0和JSP。我已经创建了一个RequireVerificationFilter,它将未经验证的用户重定向到“验证您的电子邮件”页面 我在最后一个位置将过滤器添加到spring security过滤器堆栈中,如下所示: my app-config.xml中的Bean定义:Servlets SpringSecurity3.0:如何指定应用自定义筛选器的URL?,servlets,spring-security,servlet-filters,Servlets,Spring Security,Servlet Filters,我正在使用SpringSecurity3.0和JSP。我已经创建了一个RequireVerificationFilter,它将未经验证的用户重定向到“验证您的电子邮件”页面 我在最后一个位置将过滤器添加到spring security过滤器堆栈中,如下所示: my app-config.xml中的Bean定义: <bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" /&g
<bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />
<custom-filter ref="requireVerificationFilter" after="LAST" />
已将筛选器添加到my security-config.xml中的spring安全筛选器列表中:
<bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />
<custom-filter ref="requireVerificationFilter" after="LAST" />
过滤器工作,但它过滤自己的重定向URL。也就是说,筛选器将未验证的用户重定向到/access/verify,但该URL也被筛选器捕获,它会无限期地尝试重定向
我尝试使用
标记来限制这个新过滤器应用于的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>
要求混响滤波器
com.ebisent.web.requireRefrificationFilter
要求混响滤波器
/帐目/*
我通读了spring安全文档中的“添加您自己的过滤器”,但没有找到答案
我的问题是,如何指定我的筛选器应用于哪些URL
更新:
我通过在过滤器本身中指定允许的URL来实现这一点。这对我来说很好,但如果有更好/更“灵活”的方法,我会很高兴听到它。您必须在实际的配置xml中执行此操作(与
相同的位置)
<http ...>
<intercept-url pattern="/access" ... filters="..., requireVerificationFilter, ..." />
<intercept-url pattern="/verify" ... filters="none" />
...
</http>
...
沿着这些思路,您可以指定要运行的筛选器列表,并排除不运行的筛选器(“无”表示无)。您不需要将您的筛选器添加到web.xml-仅与Spring安全筛选器链内联。对此,您应该使用
org.springframework.Security.web.FilterChainProxy
。属性筛选器应仅包含无:
<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" />
谢谢!我的安全配置中有intercept url标记,但我不知道您可以在那里指定筛选器。但是说:filters
attribute“只能接受值“none”。