はじめに
この記事ではメールでアカウント認証をするときの一例を説明します。具体的には、ユーザーがサインアップするとメールが送られてきて、そのメールにURLが書いてあり、そのURLをクリックするとアカウント認証完了とします。以下が大きな流れです。
1.トークンを生成し保存
サインアップする時にトークンを生成する。トークンとはランダムでとても長い文字列の事である。以下の図ではトークンをsampletokenとした。
その際にトークンをデータベースに登録し(この時トークンをハッシュ化して登録した方がセキュリティ的に良い)、そのトークンを末尾にくっ付けたURL(https:/www.account.co.jp/sampletoken
)を生成する。その後、URLを記したメールを、ユーザーがサインアップで記入したメールアドレスに送信する。
2.ユーザーがクリックしてトークンを送信
ユーザーがそのURLをクリックすると、ブラウザがURLの語尾を切り取って、その語尾をサーバーに送信する(ようにプログラムする)。
3.データベースと照会
送られてきた語尾を、データベースに保存したトークンと比較して、同じであればtrue、違うならばfalseを返す。
4.認証完了
trueが返ってくればアカウント認証完了とし、次の画面(例えばユーザーの設定画面とか、サインインした状態のトップページとか)に遷移する。
とは言っても
Gemのdeviceとか使えばすぐできるんだろうけど、、、