我的<intercept-url>
XML中有几个spring-security
。我只是有这个小疑问。假设我有类似的东西:
<intercept-url pattern="/data/**" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" />
由于以下<intercept-url>
的模式为/**
,我想知道第二个网址是否超越了第一个网址。例如。即使我是用户,我也可以访问/ data / **。
答案 0 :(得分:2)
您可以使用多个
<intercept-url>
元素为不同的URL集定义不同的访问要求,但它们将按列出的顺序进行评估,并将使用第一个匹配项。所以你必须把最具体的比赛放在最上面。
只要稍后列出/**
的规则,它就不会覆盖/data/**
的更具体的规则。
正如jpprade已经建议的那样,如果您以普通用户的身份访问/data/**
并遵守上述规则,那么您的配置必定存在其他问题。在这种情况下,请共享您的web.xml和整个安全配置以对其进行故障排除。
答案 1 :(得分:1)
第二个不会覆盖第一个,理论上它是第一个应用的匹配规则。
如果您可以访问/ data / **作为USER,可能是因为您错过了配置中的某些内容,可能是过滤器声明?