To Be Determined

.NET CoreやAzureについての備忘録

ASP.NET Coreで認証機能(Identity)をカスタマイズする

ASP.NET Core 2.1でWebアプリケーション作るとき認証周り(ログインとか会員登録とか)を自動で生成してくれて非常に便利なんだけど、そのまま使うとView(見た目)もController(サーバー処理)も見当たらなくてカスタマイズができない。そこら辺の対処法の備忘録。

前提条件

プロジェクトに認証機能を追加する

ログインやログアウトはもちろんパスワードリセットとか認証系の機能は一通り自動で作ってくれる。本当に便利。好き

簡単に手順を書いておく

  1. Visual Studioを開いた状態でCtrl + Shift + Nで新しいプロジェクト
  2. ASP.NET Core Webアプリケーションを選択(名前とかはよしなに)
  3. Webアプリケーション(モデル ビュー コントローラー)を選択
  4. 認証の変更ボタンをクリック
  5. 個別のユーザーアカウントを選択してOKボタンをクリック
  6. 前のウィンドウに戻ったらOKボタンをクリック

以上で認証機能を持ったWenアプリケーションのひな型が完成する。試しにデバッグしてみると確かに認証機能が搭載されているのがわかる
f:id:masashai:20181027155243p:plain
ただ、「デザインまじイケてるしグローバル展開目指してるから英語でサンキュー!」って人以外は絶対にカスタマイズしたいと思う

Viewのカスタマイズ

Areas > Identityフォルダに認証系のファイルが一通りありそうに見えるけど、実際にはない。Viewをカスタマイズするにはスキャフォールディングして.cshtmlファイルを追加する必要があるみたい

手順は以下の通り

  1. Areasフォルダで右クリック
  2. 追加 > 新規スキャフォールディングアイテム をクリック
  3. インストール済みの中からIDを選択して追加ボタンをクリック
  4. 追加したいファイルにチェック、データコンテキストクラスを設定して追加ボタンをクリック

これで認証系のViewがIdentityフォルダの中に階層に追加されている。
試しにregister.cshtmlを編集してみる
f:id:masashai:20181027160302p:plain
デバッグ
f:id:masashai:20181027155257p:plain
ちゃんと編集できた

Controllerのカスタマイズ

結論から言うとControllerはない。ただ、サーバー処理をカスタマイズすることはできる。認証系の.cshtmlファイルをクリックすると配下に.cshtml.csファイルがいるのがわかる。どうやらこいつがサーバー処理を牛耳っているみたい。例えば会員登録処理をカスタマイズしたい場合は、register.cshtmlの配下にあるregister.cshtml.csを編集することになる。.NET FrameworkのときはAccount Controllerってのがいたんだけど、.NET Coreから変わったのかな。
f:id:masashai:20181027160321p:plain