我们可以在filterChainProxy中为单个过滤器链提供多种模式

Coo*_*blu 2 spring spring-security

我有两种模式,要应用相同的过滤器.

<security:filter-chain pattern="/home.do*" filters="a,b,c,d" />
<security:filter-chain pattern="/login.do*" filters="a,b,c,d" />
Run Code Online (Sandbox Code Playgroud)

除了上述两个之外,还有许多其他独特的模式和通用模式/**/*.do*/**.

我可以在模式属性中指定逗号分隔的多个模式,如下所示:

<security:filter-chain pattern="/home.do*, /login.do*" filters="a,b,c,d" />

Xae*_*ess 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">
    
    Run Code Online (Sandbox Code Playgroud)
  • 在3.1中,您可以使用request-matcher属性(path-type在以前的示例中弃用,仅更改路径类型以请求匹配器),或者您可以将多个http元素与request-matcher-refbean一起使用并执行以下操作:

    <http pattern="test.do,home.do" security="none" <!-- 'none' as example -->
        request-matcher-ref="requestMatcher" />
    
    <bean id="requestMatcher" class="com.example.CommaSeparatedRequestMatcher" />
    
    Run Code Online (Sandbox Code Playgroud)

    根据您的自定义实现CommaSeparatedRequestMatcher(根据请求和triest创建的URL分割以匹配任何字符串),例如,RegexRequestMatcher.