Grails:如何获取当前登录用户的用户名,以及需要哪些导入?

Hum*_*ise 1 authentication grails

我只需要当前登录用户的名称.与gsp一起显示的内容相同<sec:username/>.我不知道该怎么做.以下是之前的答案和问题 - 它们似乎都需要一些导入,并且没有一个解决方案适合我:

具体来说,我想访问控制器中的用户名并将其放入域实例的变量中,以便将其(与其他信息一起)保存到数据库中以进行日志记录.在控制器内部,没有什么可以看到甚至远程引用人/用户类,弹簧安全或任何其他听起来像它可能做我想要的事情.

Ian*_*rts 5

您可以使用,访问与登录用户对应的域对象springSecurityService.currentUser,然后从那里获取用户名(或您需要的任何其他属性).由于Groovy的动态特性,您不需要导入域类或SpringSecurityService类来执行此操作,只需使用无类型依赖注入

def springSecurityService
Run Code Online (Sandbox Code Playgroud)

你可以访问springSecurityService.currentUser?.username(或其他).

虽然Burt在评论中指出,如果它只是您想要的用户名,那么使用它会更有效,springSecurityService.authentication.principal.username因为这不需要从数据库加载用户对象.你只需要currentUser,如果你想从ID或用户名的用户对象一旁的其他属性.

  • `currentUser`是获取用户名的一种昂贵方式,因为它从db加载`User`实例.`authentication.principal.username`是轻量级的,因为它已经缓存在内存中 (4认同)

归档时间:

查看次数:

3846 次

最近记录:

10 年,11 月 前