如何使用spring安全性插件获取当前用户角色?

lax*_*xmi 20 grails authorization spring-security role

我在我的grails应用程序中使用spring-security-core插件.我需要知道当前用户在控制器操作中的角色.我该如何检索?

Mik*_*ler 32

你可以注入springSecurityService你的控制器:

def springSecurityService

然后在你的行动中,致电:

def roles = springSecurityService.getPrincipal().getAuthorities()

请参阅此处的文档.

  • for(角色中的角色定义){if(role.getAuthority()==“ ROLE_ADMIN”)//做某事} (2认同)

Bur*_*ith 20

从控制器中,您可以使用插件添加到元类的两种方法,getPrincipal并且 isLoggedIn:

def myAction = {
   if (loggedIn) {
      // will be a List of String
      def roleNames = principal.authorities*.authority
   }
}
Run Code Online (Sandbox Code Playgroud)

如果操作安全,您可以跳过loggedIn/ isLoggedIn()检查.