spring - grails - 获取全局当前用户

标签 spring grails groovy spring-security

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

String username = getPrincipal().username

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

最佳答案

您可以通过两种方式实现:
1) 您可以在任何您想要的地方注入(inject) SpringSecurityService,只需在任何 Controller /服务中即可:

SpringSecurityService springSecurityService

def someMethod(){
   springSecurityService.principal
}

2)您可以使用SecurityContextHolder:

def someMethod(){
   SecurityContextHolder.context.authentication?.principal
}

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

关于spring - grails - 获取全局当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838290/

相关文章:

java - 通过spring AOP + Aspectj进行异常处理

java - Spring Java 配置中的 Hibernate 3 sessionFactory

java - 使用具有多对多关系的 Grails 的 withCriteria 函数的重复问题

jenkins - 从外部 groovy 文件加载 jenkins 参数

java - 在一种方法上结合@Secured 和@PreAuthorize 注释

java - Spring:将数据库配置从 XML 文件迁移到注释

hibernate - withCriteria “or”就像其他表格的属性一样

grails - Grails createCriteria多对多

grails - Grails上次登录字段未更新

java - 我想将数组的所有元素包含到另一个数组