如何要求多个角色/权限

时间:2016-02-04 15:12:59

标签: spring spring-security spring-4

据我所知,只有 @Secured注释或ExpressionUrlAuthorizationConfigurer对象中的列表可用。尝试添加多个注释或hasAuthority()调用无法编译或仅使用最新的注释。

如何定义特定请求(匹配模式的请求集)或方法需要所有角色/权限列表?

3 个答案:

答案 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])