首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Security是否有一个执行“hasAnyRole”和版本的“hasAllRole”?

Spring Security是否有一个执行“hasAnyRole”和版本的“hasAllRole”?
EN

Stack Overflow用户
提问于 2011-11-02 01:04:11
回答 3查看 2.3K关注 0票数 0

我在Grails中使用Spring Security来限制对我的控制器的访问。我有一个用例,在这个用例中我想检查一个用户是否分配了多个角色。我意识到我可以只做另一个角色,这个角色与“个人拥有这两个角色”是同义词,但它需要比我想要的更多的改变。

Spring Security有一个OR版本的expression来检查用户是否有角色列表中的任何一个:

代码语言:javascript
复制
//allow user to access if he has role ROLE_ADMIN -OR- ROLE_USER
//note this is shortcut notation for hasAnyRole(["ROLE_ADMIN","ROLE_USER"])
@Secured(["ROLE_ADMIN","ROLE_USER"])
def index = {}

有没有一种方法,或者只是使用Spring Expression Language (SpEL)来做以下事情:

代码语言:javascript
复制
//allow user to access if he has role ROLE_ADMIN -AND- ROLE_USER
@Secured("hasAllRole(['ROLE_ADMIN','ROLE_USER']")
def index = {}

注意: SpringSecurityUtils类确实有方法

代码语言:javascript
复制
public static boolean ifAllGranted(final String roles)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-02 01:12:58

如果你使用@PreFilter而不是@Secured,那么你可以这样写:

代码语言:javascript
复制
@PreFilter("hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')")
票数 2
EN

Stack Overflow用户

发布于 2011-11-02 01:08:27

代码语言:javascript
复制
hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')

再简单不过了

票数 3
EN

Stack Overflow用户

发布于 2011-11-02 01:08:10

你能不能不做hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7970029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档