grails - 使用 Groovy Spring security getCurrentUser 获取有意义的字符串

标签 grails spring-security

我为当前用户收集字符串的代码如下所示。

package timetracker2

import grails.timesecurity.*
import timetracker2.TimeController

class Time {

   def springSecurityService

   int id
   Project projectname
   Date dateCreated
   Date dateWorked
   Double timeSpent
   TimeClassification classification

   String currentUser = {
      String currentUser = springSecurityService.getCurrentUser()
      def user = springSecurityService.getCurrentUser()
      String username = user
      return username
   }

   static constraints = {
      timeSpent blank: false
      classification blank: true
   }

   static mapping = {
      table 'Time'
      cache true
      id column: 'Time_id'
      dateCreated column: 'Date_created'
      dateWorked column: 'Date_Worked'
      timeSpent column: 'Time_Spent'
      currentUser column: 'Username'
   }
}

这是我得到的字符串....
timetracker2.Time$_closure1@108115

那是怎么回事????任何帮助将不胜感激。

我也尝试过使用获取授权,并且尝试在我的 person 类中添加一个 toString 方法。可惜没有成功。

最佳答案

我怀疑这里的部分问题是您正在尝试使用 springSecurityService在设置之前。声明中的初始化表达式

String currentUser = springSecurityService.getCurrentUser()

在构造对象时运行,但 springSecurityService此时引用为空,因为它仅在构造函数完成后才被注入(inject)。您可以将引用 springSecurityService 的代码放在变成 beforeInsert事件,这将延迟调用,直到对象第一次保存到数据库。你可能想要principal.username而不是 getCurrentUser() (感谢 Burt Beckwith 的指点)
class Time {
  def springSecurityService

  String currentUser
  // other fields...

  def beforeInsert() {
    currentUser = springSecurityService.principal.username
  }

关于grails - 使用 Groovy Spring security getCurrentUser 获取有意义的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14662693/

相关文章:

java - 无法将 Groovy 代码编译成 java 类文件

Grails GORM 从表中返回随机行?

json - 如何在JSON编码中添加 “data”和 “paging”部分

spring-mvc - 如何将 Thymeleaf SpringSecurityDialect 添加到 spring boot

spring-security - 具有数据库和多个角色的 Spring 安全性?

ruby - Groovy/Grails相当于Ruby/Rails的 'timecop' gem

grails - Grails 3 Spring Security UI忘记密码空白URL和用户

spring - BadCredentialsException : Kerberos validation not succesfull

java - Spring Security - 何时清除SecurityContextHolder

java - Spring 安全: Unable to autowired DAO in the UserDetailsService class