我在grails应用程序中使用Spring Security插件是新手。这是让当前用户登录的代码。

String username = getPrincipal().username

但是,关键是我在每个操作中都写了这一行来获得当前用户。有没有办法全局获取当前用户?并在每个 Action 中使用它,而不必一次又一次地声明它?

最佳答案

您可以通过2种方式来做到这一点:
1)您可以在任何需要的地方注入(inject)SpringSecurityService,只需在任何 Controller /服务中即可:

SpringSecurityService springSecurityService

def someMethod(){
   springSecurityService.principal
}

2)您可以使用SecurityContextHolder:
def someMethod(){
   SecurityContextHolder.context.authentication?.principal
}

我建议使用选项1,它使测试更容易等。

10-04 14:53