IdentityASP.NET Coreでメールによる認証機能の追加

どうも。てちこまです。
今回は前回のWebAppで実装されなかったメールでの認証機能(アカウントの有効化)を追加します。

公式にある通りSendGridを利用して実装します。

またログインそのものは実装済みであることを前提に進めます。

環境

Windows 10
Visual Studio 2019
ASP.NETCore 3.1
Entity FrameworkCore
IdentityASP.NET Core

1. SendGridにアカウント登録

このリンクSendGridからfreeプランで登録しましょう。

無料でも月に12000件送信できるみたいです。

※本登録完了から実際に利用できるまで利用目的の審査のため時間(翌営業日程度)がかかります。

2. SendGridのアカウントを取得するクラスとIEmailSenderを実装します

以下の通りServicesフォルダを作成しEmailSender.csとAuthMessageSenderOptions.csを追加しましょう。

AuthMessageSenderOptions.cs

EmailSender.cs

※Executeメソッド内のYourEmailは自分のものに変更してください。

3. 「SendGrid」NuGetパッケージをいれる

パッケージコンソールで以下のコマンドを打つかパッケージマネージャからSendGridを導入しましょう。
Install-Package SendGrid

4. SendGridのIDとパスワードをsecretに登録

WebAppのプロジェクト階層で以下のコマンド叩きましょう。

  1. ユーザ名の確認方法
    SendGridから届いた「SendGridにようこそ」のメールで確認できます。

file

2.APIkeyの確認方法
デフォルトでは存在しないのでSendGridで作成する必要があります。

上記のユーザ名とアカウント登録時に設定したパスワードでSendGridにログインしこちらのURLもしくはメニューの Settings>ApiKeys からAPIkeyを作成してください。

※黒塗り部分がAPIkeyです
file

作成すると一度だけAPIkeyが表示されますのでそれを上記コマンドで使用します。

5.Startup.csにEmail認証の設定を追加

ConfigureServicesに以下のコードを追記します。

Startup.cs

6. 実装完了

実際に実在するメールアドレスでユーザ登録などを行ってみましょう。

デフォルトではメールによるアカウント認証はダミーリンクでしたが実在するメールアドレス宛に確認リンクが届くはずです。

これを踏まない限りアカウントは有効化されません。

file

まとめ

ほとんど機械的にメール認証まで実装できるのは純粋にすごいです。

このままだとメールの本文があり得ないぐらい簡素なのでそこは各々で調整しましょう。

加えて外部アカウントでのログインや紐づけも一瞬でできます。
次回の.netの記事でそちらも実装します。

てちこま

高卒後3年ニート。 起死回生でコン専入学。 資格とったり、アプリ作ったりしてました。 2020から新米WEBエンジニアになりました。

シェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする