我已经将onAuthenticationSuccessEvent添加到了我的config.groovy中,以便尝试将登录模型添加到用户用户模型中的列表中。我遇到的问题是,事件监听器是一个闭包,因此没有HibernateSession或访问状态以外的闭包。Spring安全事件监听器中持久化的Groovy模型
我知道它可以通过做这样的事情的HibernateSession绑定:
grails.plugins.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
Login.withTransaction{
login = new Login()
}
}
的问题是,登录属于用户,并且需要在其构造函数中定义的用户。我如何将用户传递给关闭?
我想要做的事,如:
def user = grails.admin.User.read(appCtx.springSecurityService.currentUser.id)
Login.withTransaction{ user ->
login = new Login(user: user)
}
,但不知道如何通过特定的用户在
我不能这样做,因为该同样的原因,我不能在闭包中引用用户 - 闭包不包含事件处理程序其余部分的范围,因此appCtx对象在闭包中也为null。我最终得到“无法获得属性'currentUser'null对象。”所以我需要将用户或appCtx作为属性关闭,但不知道如何。 – 2012-02-14 17:17:24