所以我有以下示例Spring安全设置 -
<security:intercept-url pattern="/accounts/search"
access="hasAnyRole('ROLE_VIEWER')" />
<security:intercept-url pattern="/accounts/*"
access="hasAnyRole('ROLE_ADMIN')" />
如上所述,用户具有角色ROLE_VIEWER
,他应该能够访问/accounts/search
,因为具有角色ROLE_ADMIN
的用户也可以访问以/accounts
开头的所有工作流程。此处ROLE_ADMIN
用户无法访问搜索。
所以我想知道在订单有效的情况下,这种设计的用例是什么?
如果控制器的情况
@RequestMapping("/simple/*")
public @ResponseBody String simple1() {
return "Hello world1!";
}
@RequestMapping("/simple/test")
public @ResponseBody String simple2() {
return "Hello world2!";
}
无论订单如何, /simple/test
都会匹配与simple2
相对应的处理程序方法,而不是simple1
。
答案 0 :(得分:0)
一般情况下:只要在url-pattern中使用通配符,并且url开始匹配不同的url-patterns,那么顺序就很重要。
典型的用例是允许网址的白名单:除了一些明确定义的网址外,所有内容都被拒绝(或仅限管理员)。使用spring security,您通常会以这种方式配置白名单:
<!-- explicit allowed urls -->
<security:intercept-url pattern="/somethingAllowd" access="permitAll" />
...
<!-- "catch all" that deny all not explicit allowed urls except for admns -->
<security:intercept-url pattern="/**" access="hasAnyRole('ROLE_ADMIN')" />
现在订购事宜!