2010年9月13日月曜日

Acegiプラグインでprincipalをリフレッシュする方法

久々にブログに書くネタが出来たので、備忘録的にメモ。

GrailsのAcegiプラグインを使って認証処理を行ったとき、ログイン中に更新されたユーザ情報はSecurityContextのprincipalとかには更新されなかったりする。
恐らくセッション上に抱えてるユーザ情報はそのままキャッシュに残ってるので、どうにかしてこの情報を更新したいんだけれども、やり方がわからない。
で、google先生に教えを乞うて海外サイトを色々探した結果、こんな記事を発見。

http://blog.lourish.com/2010/03/10/updating-the-logged-in-user-with-acegispring-security-in-grails/

「Refresh the Authentication Token」…おおっ、これだこれ。

方法としては、ようするに認証済みのAuthenticationTokenを作ってSecurityContextにぶち込んでるらしい。…いいのか、これ?
自分の環境でも試してみたけど、とりあえずは動いてる。いい…のか?

まあ、他の方法としてはSecurityConfig.groovyのcacheUsersをfalseにするとかというのもあるらしい。
…まあ、キャッシュ切ればそりゃ勝手に更新されるわな。