如何配置管理员角色以在Spring Security中访问所有URL

时间:2018-11-27 08:55:49

标签: spring spring-boot spring-security

所有文档法官首先确定网址,然后确定角色,例如

http.authorizeRequests()
    .antMatchers("/aaa/xxx").permitAll()
    .antMatchers("/aaa/yyy").hasAnyRole("MANAGER")
    .antMatchers("/aaa/ccc").hasAnyRole("WORKER")

但是我想先判断角色

http.authorizeRequests()
    // first judge role
    .hasAnyRole("ADMIN").permitAll()
    // then judge url 
    .antMatchers("/aaa/yyy").hasAnyRole("MANAGER")
    .antMatchers("/aaa/ccc").hasAnyRole("WORKER")

我想先判断一下这个角色。如果角色不是ADMIN,则判断URL及其角色。

我希望ADMIN可以访问“ / aaa / yyy”和“ / aaa / ccc”以及其他。

有一种愚蠢的实现方式,就是在所有hasAnyRole()方法中添加所有“ ADMIN”,就像这样

http.authorizeRequests()
    .antMatchers("/aaa/yyy").hasAnyRole("ADMIN","MANAGER")
    .antMatchers("/aaa/ccc").hasAnyRole("ADMIN","WORKER")
    # .... there is many many antMatchers() need add "ADMIN"

我不要路,我需要另一种更好的路。

1 个答案:

答案 0 :(得分:0)

http.authorizeRequests()
    .antMatchers("/aaa/yyy").hasAnyRole("MANAGER")
    .antMatchers("/aaa/ccc").hasAnyRole("WORKER") //you can put here many roles .hasAnyRole("WORKER", "MANAGER")
    .anyRequest().hasAnyRole("MANAGER")