据我所知,只有 @Secured
注释或ExpressionUrlAuthorizationConfigurer
对象中的列表可用。尝试添加多个注释或hasAuthority()
调用无法编译或仅使用最新的注释。
如何定义特定请求(匹配模式的请求集)或方法需要所有角色/权限列表?
答案 0 :(得分:1)
最好的解决方案似乎是
@PreAuthorize("hasRole('one') and hasRole('two') and ...")
没有一种好方法来使用常量,例如@Secured
。
答案 1 :(得分:0)
作为端点范围的解决方案,您可以使用
.antMatchers("/user/**").access("hasAuthority('AUTHORITY_1') and hasAuthority('AUTHORITY_2')")
我只用两个权威机构测试过它,但我想你可以 - 不止两个。
答案 2 :(得分:-1)
您似乎正在使用:unsafe
。这仅需要一个权限。而是使用hasAuthority([authority])
。这使您可以一次指定多个授权机构,任何授权机构都可以考虑。参考正式的Spring文档here。只需在页面中找到以下文本:hasAnyAuthority([authority1,authority2])
例如,在您的控制器方法上,添加:hasAnyAuthority([authority1,authority2])