检查特定用户是否有角色

bez*_*max 9 security grails spring spring-security

是否有一些很好的方法来检查某个特定用户(不是登录的用户)是否具有某些特定角色?

这是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
...
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Ste*_*ter 9

我假设,您的用户域类拥有对您的Role类的hasMany引用,如下所示:

class User  {
    static hasMany = [authorities: Role]
    //....
}
class Role  {
    static belongsTo = User
    String description
    String authority
    //....
}
Run Code Online (Sandbox Code Playgroud)

所以你的角色检查代码很简单:

User user = User.get(1)
if (user.authorities.any { it.authority == "ROLE_ADMIN" }) {
    // user is a admin
}
Run Code Online (Sandbox Code Playgroud)

可以在此处找到更新的答案.