【Auth0】メールアドレスの確認が済んでいないユーザーのログインを拒否する
はじめに
Auth0はサインアップ時にログインIDとして登録されたメールアドレスに確認のメールを送ります。
ユーザーが確認メールに記載されているリンクにアクセスすることでメールアドレスのステータスが確認済みとなります。
本記事ではAuth0にRulesを使ってメールアドレスが未確認の場合はログインを拒否することでアプリケーションの利用開始前にユーザーにメールアドレスの確認を強制する方法を紹介します。
Rulesの設定
管理画面のRulesのページにアクセスしCREATE RULE
を押して新しいRuleを作成します。
標準で多数のRuleテンプレートが用意されています。
メールアドレスの確認を強制するRule(Force email verification
)も標準で用意されているのでこれをそのまま利用します。
選択すると以下のコードが展開されるのでこれを保存します。
function emailVerified(user, context, callback) {
if (!user.email_verified) {
return callback(new UnauthorizedError('Please verify your email before logging in.'));
} else {
return callback(null, user, context);
}
}
このRuleが有効な状態でメールアドレスが未確認状態のユーザーがログインするとUnauthorizedError
が発生します。
アプリケーション側には以下のようなURLでコールバックされます。
https://example.com/callback?error=unauthorized&error_description=Please%20verify%20your%20email%20before%20logging%20in.&state=3ZO2lgVJkICccAxQVvmz9P9o34ccbmeW
error
とerror_description
パラメーターでエラーを判断することができます。
エラー発生時のアプリケーション側の対応
メールアドレス未確認によってコールバックされたときにアプリケーション側でエラー処理が必要になります。
エラーの内容を読み取ってユーザーに新規登録時に送信したメールの確認を促します。
エラーメッセージの工夫
コールバックされたときのerror
パラメーターの値だとunauthorized
としか読みとれません。
他にもエラーを出力する可能性のあるRulesを設定しているとerror
パラメーターでは事象を正確に捉えられない恐れがあるので
error_description
にエラーコードなどを埋め込むことで事象の切り分けをできるようにすることをお勧めします。
return callback(new UnauthorizedError('[00043] - Please verify your email before logging in.'));
参考
https://auth0.com/docs/best-practices/error-handling
おわりに
ログイン前にメールアドレスの確認を強制したい場合はぜひこのRulesを使ってみてください。
コードのテンプレートが用意されているのでとても簡単に導入できます。
Author And Source
この問題について(【Auth0】メールアドレスの確認が済んでいないユーザーのログインを拒否する), 我々は、より多くの情報をここで見つけました https://qiita.com/smesh/items/94afa524c28963e1f15a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .