我有两种模式可以应用相同的过滤器。
<security:filter-chain pattern="/home.do*" filters="a,b,c,d" />
<security:filter-chain pattern="/login.do*" filters="a,b,c,d" />
除上述两个外,还有许多其他独特模式和通用模式/**/*.do*/**
。
我可以在模式属性中指定逗号分隔的多个模式,如下所示:
<security:filter-chain pattern="/home.do*, /login.do*" filters="a,b,c,d" />
答案 0 :(得分:6)
是的,你可以,但实现取决于你正在使用的Spring Security版本。
在3.0中,您可以使用path-type
属性:
<security:filter-chain-map path-type="regex">
<security:filter-chain pattern="^/(test|home)\.do$" filters="a,b,c,d" />
<!-- other patterns -->
<security:filter-chain-map path-type="regex">
在3.1中,您可以使用request-matcher
属性(不推荐path-type
,只需更改路径类型以在前面的示例中请求匹配器),或者您可以使用多个http
使用request-matcher-ref
bean的元素并执行此操作:
<http pattern="test.do,home.do" security="none" <!-- 'none' as example -->
request-matcher-ref="requestMatcher" />
<bean id="requestMatcher" class="com.example.CommaSeparatedRequestMatcher" />
使用您的自定义实现CommaSeparatedRequestMatcher
(根据请求和triest创建的URL匹配任何字符串),例如RegexRequestMatcher
。