spring security <intercept-url>如何工作..?</intercept-url>

时间:2013-08-26 08:06:21

标签: spring-mvc spring-security

我的<intercept-url> XML中有几个spring-security。我只是有这个小疑问。假设我有类似的东西:

<intercept-url pattern="/data/**" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" />

由于以下<intercept-url>的模式为/**,我想知道第二个网址是否超越了第一个网址。例如。即使我是用户,我也可以访问/ data / **。

2 个答案:

答案 0 :(得分:2)

来自reference documentation

的引用
  

您可以使用多个<intercept-url>元素为不同的URL集定义不同的访问要求,但它们将按列出的顺序进行评估,并将使用第一个匹配项。所以你必须把最具体的比赛放在最上面。

只要稍后列出/**的规则,它就不会覆盖/data/**的更具体的规则。

正如jpprade已经建议的那样,如果您以普通用户的身份访问/data/**并遵守上述规则,那么您的配置必定存在其他问题。在这种情况下,请共享您的web.xml和整个安全配置以对其进行故障排除。

答案 1 :(得分:1)

第二个不会覆盖第一个,理论上它是第一个应用的匹配规则。

如果您可以访问/ data / **作为USER,可能是因为您错过了配置中的某些内容,可能是过滤器声明?