ASP.NET Core Identity 1
前回で何となく構成を把握できた(ということにして)、で、
実際のWebアプリに必要となる事を順にお勉強していきたいと思います。
とりあえずWebアプリには基本的に必須な認証系、
ASP.NET Core Identityを勉強していきます。
ASP.NET Core Identity
MemberShipに成り代わって誕生した新しい仕組み。
と言っても2013年ごろからありますね。
現時点で1.1.0が最新リリースです。
3の次から間にCoreが付いて1から振りなおしたようです。
ASP.NETならWeb FormsだろうとMVCだろうと何でも使えて、
Entity Frameworkを使ってCode Firstでテーブル生成できたり、
使わない場合でもデータストアに融通が利いて、
OWIN準拠なのでFacebookやTwitterの認証が使えたり、
2段階認証を使えたりするイマドキのプロバイダらしいです。
と、適当にググったところで習うより慣れろ、
認証を有効にしたサンプルを見てみます。
認証を使うWebアプリケーションプロジェクトの作成
[新しいプロジェクト]→[ASP.NET Core Webアプリケーション(.NET Core)]
を選択後に表示されるダイアログで、[認証の変更]ボタンを押して、
個別のユーザーアカウントを選択してOKOKしてプロジェクトを作成します。
とりあえず実行
前回の認証無しサンプルより色々ファイルが増えています。
とりあえず何も考えずにF5をターンと押して実行します。
まずユーザー登録したいのでRegisterをクリック。
ユーザー登録画面が表示されるので、
適当な嘘アドレス、適当なパスワードを入力しRegisterボタンクリック。
パスワードは強度を求められます。大文字小文字英数以外記号を含むくらい。
DB開けないしってことで、エラーになります。
いきなり実行したのでDBがMigrationによって作成されていないためです。
素直にApply Migrationsボタンをクリック。
終わったらこんな感じにボタンが変わります。
もう一度ユーザー登録を試すと今度は登録成功します。
VS2017ならワークロード「データの保存と処理」が未導入の場合は
LocalDBが無いわけだからここで失敗するのかな?ためしてないですが。
因みに私が導入しているワークロードは以下のとおりです。
-
- .NET デスクトップ開発
- ASP.NETとWeb開発
- Azureの開発
- データの保存と処理
- .NET Coreクロスプラットフォームの開発
勝手に作ってくれたDBはどこ?
"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Sample3-略;Trusted_Connection=True;MultipleActiveResultSets=true" },
appsettings.jsonを確認すると接続文字列があります。
サンプルは既定でLocalDBを使うようになっています。
LocalDBは開発用SQL Serverデータベースみたいなものです。
別に開発用SQL Serverを導入した場合はここを変更すれば良いかと。
メニューの[ツール]→[データベースへの選択]で、
Microsoft SQL Serverを選択し、データプロバイダーは
.NET Framework SQL Server 用データ プロバイダーを選択して続行をクリック
LocalDBはサーバー名の候補に自動で挙がらないみたいなので、
接続文字列通り入力します。
入力後、データベース名は選択可能となるので、
これも接続文字列に指定されているDBを選択してOK。
サーバーエクスプローラーからDB確認できるようになりました。
ASP.NET Core Identityっぽいテーブルが作成されているのがわかります。
AspNetUsersテーブルをSELECTすると先ほど作成したテストユーザーが
登録されているのが確認できます。
とりあえず続く。