ASP.NET Core Identity 認証機能の追加

ASP.NET Core Identity 認証機能の追加

Microsoft Identityの公式リファレンス

https://docs.microsoft.com/ja-jp/aspnet/core/security/authentication/identity

まずはWebアプリのプロジェクトを作成

VSCodeを使って.NET Core CLIのコマンドを使って作成する手順です。

dotnet new webapp --auth Individual -o WebApp1

ターミナル(Ctrl+@)から上記のコマンドを実行します。
すると、認証機能付きのRazorPageアプリ「WebApp1」が作成されます。

プロジェクトディレクトリを開く

カレントディレクトリにWebApp1ディレクトリが作成されるので、VSCodeから開きます。
認証関連は以下のディレクトリが関連しています。

WebApp1/Areas/Identity
WebApp1/Data
WebApp1/Startup.cs

Identityはファイルが不足している?

ソースを見ていくと、Areas/Identityにはほとんどファイルがありません。
_ViewStart.cshtmlがあるだけで、中身はSharedの_Layout.cshtmlを参照しているだけです。
ログインページや、その処理に関する記述が見当たりません。

その理由は、認証機能はプロジェクト内には含まれおらず、Identity Razor クラス ライブラリが参照されているからです。

スキャフォールディングしてプロジェクトに全てのコードを展開しよう

以下の手順で認証に関するソース、UIのHTMLをプロジェクト内に展開することで、自由に変更可能になります。

スキャフォールディングするための ASP.NET Core scaffolder をインストールする

dotnet tool install -g dotnet-aspnet-codegenerator

プロジェクトファイルにパッケージ参照を追加する

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet restore

スキャフォールディングを実行する

コマンドを実行することで、Areas/Identity/Pages以下にAccountディレクトリが作成されます。

dotnet aspnet-codegenerator identity -dc WebApp1.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.Logout"

その中には、Login.cshtml、Logout.cshtml、Register.cshtmlなどの認証関連のページと処理が記載されたファイルが展開されます。

ファイルが配置されていることで、デフォルトではなく配置されているファイルを参照するようになります。

プログラミングカテゴリの最新記事