.NET Core MVCの開発において、肥大化しがちなMVCプロジェクトを機能ごとに切り分けて別のプロジェクトに分割する方法を紹介します。 執筆時点のASP.NET Coreのバージョンは2.1です…
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などの認証関連のページと処理が記載されたファイルが展開されます。
ファイルが配置されていることで、デフォルトではなく配置されているファイルを参照するようになります。
コメントを書く