ユーザモデル内のリストにログインモデルを追加しようとすると、config.groovyにonAuthenticationSuccessEventを追加しました。私が抱えている問題は、イベントリスナーがクロージャであり、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です。私は "nullのオブジェクトのプロパティ 'currentUser'を取得できません。だから、私はどちらかのクロージャをユーザーまたはappCtx属性として渡す必要がありますが、どのように知っている。 –