是否有一些很好的方法来检查某个特定用户(不是登录的用户)是否具有某些特定角色?
这是grails示例(对于普通Java通常是相同的但是语法):
def user = User.get(1) //Get user with id 1
if (ifAnyGranted(user,"ROLE_ADMIN")) { //This is the line I need to implement somehow
...
}
提前致谢。
答案 0 :(得分:9)
我假设,您的用户域类拥有对您的Role类的hasMany引用,如下所示:
class User {
static hasMany = [authorities: Role]
//....
}
class Role {
static belongsTo = User
String description
String authority
//....
}
所以你的角色检查代码很简单:
User user = User.get(1)
if (user.authorities.any { it.authority == "ROLE_ADMIN" }) {
// user is a admin
}
可以找到更新的答案here。
答案 1 :(得分:4)
if (grails.plugin.springsecurity.SpringSecurityUtils.ifAllGranted("ROLE_ADMIN"))
{
...
}
答案 2 :(得分:3)
如果您正在使用Spring Security插件并想要检查当前登录的用户:
import org.codehaus.groovy.grails.plugins.springsecurity.AuthorizeTools
. . .
if (AuthorizeTools.ifAllGranted("ROLE_ADMIN")){
//user is an admin
}
答案 3 :(得分:0)
我想检查当前登录的用户,你不需要查询用户域,因为你已经注入了springSecurityService,所以你可以只写:
def springSecurityService
def someAction(){
if (principal.authorities.any { it.authority == 'ROLE_ADMIN'}){
//...
} else {
//...
}
}