Spring Security中拦截url模式的顺序

Nik*_*lay 4 spring spring-security

在appSecurity.xml中我有这个:

intercept-url pattern ="/ users/profile/**"access ="hasRole('VIEW_PROFILES')".

intercept-url pattern ="/ users/profile/edit/**"access ="hasRole('EDIT_PROFILES')"

我有一个页面/ users/profiles/edit/addnew,当具有角色VIEW_PROFILES的用户试图访问此页面时,他成功获取它,但是对具有角色EDIT_PROFILES的用户的访问被阻止.

我做错了什么?

Rit*_*esh 9

由于"/users/profile/edit/"更具体"/users/profile/",它应该放在列表中更高的位置.

为什么

模式始终按照定义的顺序进行评估.因此,重要的是在列表中定义的更具体的模式比不太具体的模式更高.这反映在我们上面的示例中,其中更具体/安全/超级/模式看起来高于不太具体/安全/模式.如果它们被反转,则/ secure/pattern将始终匹配,并且永远不会评估/ secure/super/pattern.

来源:核心安全过滤器