【回答】アカウントの有効化について
問題
メールを使用したアカウントの有効化機能の実装方法について説明して下さい。
回答
以下の流れで実装します。
- ユーザ作成時の初期状態は「有効化されていない」にしておく
- 有効化トークンと有効化ダイジェストを作成する
- 有効化ダイジェストはDBに保存。有効化トークンはメール本文のリンクに仕込んで送付する
- ユーザがメールにリンクをクリックしたら、メールアドレスで検索を行い、対応する有効化ダイジェストとリンクに仕込まれた有効化トークを比較することで認証を行う
- ユーザの認証が成功したら「有効化されている」状態へ変更する
アカウントを有効化する時のイメージ
補足
メール本文にユーザコントローラのeditアクションを起動させるURLを記述し、ユーザにクリックさせることでユーザ認証を実現しています。
params[:id]と[params:emai]で有効化トークンとメールアドレスを取得し、ユーザ認証を実施します。