我在我的 grails 应用程序中使用 spring-security-core 插件。我需要知道当前用户在控制器操作中的角色。我怎样才能找回它?
问问题
23170 次
6 回答
32
您可以注入springSecurityService
控制器:
def springSecurityService
然后在你的行动中,调用:
def roles = springSecurityService.getPrincipal().getAuthorities()
请参阅此处的文档。
于 2011-06-24T12:06:06.767 回答
20
从控制器中,您可以使用插件添加到元类的两种方法,getPrincipal
以及 isLoggedIn
:
def myAction = {
if (loggedIn) {
// will be a List of String
def roleNames = principal.authorities*.authority
}
}
如果操作是安全的,您可以跳过loggedIn
/isLoggedIn()
检查。
于 2011-06-24T12:19:51.877 回答
4
如果您只需要检查用户是否处于特定角色中,则使用SpringSecurityUtils.ifAllGranted
which 将单个字符串作为参数,其中包含以逗号分隔的角色列表。如果当前用户属于所有用户,它将返回 true。 SpringSecurityUtils
也有像ifAnyGranted
,ifNotGranted
等等这样的方法,所以它应该适用于你想要完成的任何事情。
于 2014-02-06T03:24:49.207 回答
0
获取用户
def springSecurityService
def principal = springSecurityService.principal
String username = principal.username
于 2015-11-02T10:07:11.013 回答
0
SecurityContextHolder 知道:
SecurityContextHolder.getContext().getAuthentication().getAuthorities()
于 2016-08-16T10:07:58.217 回答
-1
您也可以单独使用getAuthenticatedUser()
。此方法会自动注入到每个控制器中,因此只能从控制器中使用。如果您想从其他任何地方访问当前登录的用户,则必须使用其他方法之一。
于 2014-06-10T05:45:43.070 回答