2009年10月27日火曜日

Grailsでのメール認証つきユーザー登録

Grails バージョンは1.2-M3

ユーザー登録画面

「仮登録メールを送信しました、本登録にはこのリンクにアクセスして云々」

本登録が完了しました

という、よくあるやつです。


次のふたつのプラグインで実現
  • 定番らしいユーザー認証プラグイン「Spring(Acegi) Security 0.5.2」(公式)
  • メールアドレス確認用プラグイン「Email Confirmation 1.0.3」(公式)
まあ、「Email Confirmation」のチュートリアルをやってみたら、なんとなく感じがつかめそうですが、実装はこんな感じで。

1.「Email Confirmation」にメールアドレス、入力されたユーザー情報(ログインIDとか)を渡す
[PersonController#save]
emailConfirmationService.sendConfirmation("sendto@sample.com", "メール本文", [from:"from@sample.com", view:"/path/to/mail-body-gsp"], "${loginid}\t${encordedPassword}")
emailConfirmationServiceはプラグインが提供しているServiceです。
こうすると "sendto@sample.com"にメールアドレス確認用のリンクがかかれたメールが送られます。最後に"${loginid}\t${encordedPassword}"でユーザー情報を登録してます。

2.「Email Confirmation」のアドレス確認完了イベントでユーザー登録
さて、メールに送信されたリンクを押すと、emailConfirmationServiceのonConfirmationイベントが発生します。
このイベントにはリスナとしてクロージャを登録するのですが、このクロージャの中でさっき登録した"${loginid}\t${encordedPassword}"がとれるので、分解してユーザーを構築してDBに格納して終了です。

Grailsのユーザー認証、認可用プラグインには今回使用したSpringSecurityの他にも、JSecurity(もう非推奨、今後はApache Shiro(何?)プラグインを使えといわれた)、Authentication Pluginなどいろいろあるんですが、どれ使っても同じ用に実装すればできるのかな? (ほとんど触ってないので分からないですが。)
というか、この辺のプラグインだとEmail Confirmation使わずにできたりしないかな…

0 件のコメント:

コメントを投稿