我已經將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