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使わずにできたりしないかな…