Spring安全请求块相互矛盾

Spring安全请求块相互矛盾,spring,security,Spring,Security,我想让filter拦截所有的请求,这些请求是/person/blabla等。 但是应该有一个匿名用户可以自己注册的 每当我介绍第一条规则时,所有的子请求都会受到保护,包括底部的一条,它不是必需的 如果我不先介绍,则允许底部的请求,但匿名用户也可以访问所有后续请求,如/person/myProfile。: 您可以使用多个元素为不同的URL集定义不同的访问要求,但它们将按列出的顺序进行评估,并使用第一个匹配项。因此,您必须将最具体的匹配项放在顶部 此外,spring默认使用ant样式的模式匹配,在尝

我想让filter拦截所有的请求,这些请求是/person/blabla等。 但是应该有一个匿名用户可以自己注册的

每当我介绍第一条规则时,所有的子请求都会受到保护,包括底部的一条,它不是必需的

如果我不先介绍,则允许底部的请求,但匿名用户也可以访问所有后续请求,如/person/myProfile。

您可以使用多个元素为不同的URL集定义不同的访问要求,但它们将按列出的顺序进行评估,并使用第一个匹配项。因此,您必须将最具体的匹配项放在顶部

此外,spring默认使用ant样式的模式匹配,在尝试进行匹配时不包括参数。您还需要匹配参数是否存在。为此,需要通过上的
请求匹配器
属性进行设置


我尝试过一次启动,而不是两次启动,似乎效果不错。我承认regex的威力,但这似乎有些过分。无论如何,谢谢!
    <security:intercept-url pattern="/person/**" 
        access="isAuthenticated()" />   


    <security:intercept-url pattern="/person?reg"
        access="isAnonymous()" />
<http request-matcher="regex">
  <security:intercept-url pattern="\A/person\?reg.*\Z" access="isAnonymous()" />

  <security:intercept-url pattern="\A/person/.*\Z" access="isAuthenticated()" />
</http>