Autodidact

主にASP.NET Core、C#等関連の独学用メモ

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準拠なのでFacebookTwitterの認証が使えたり、
2段階認証を使えたりするイマドキのプロバイダらしいです。

と、適当にググったところで習うより慣れろ、
認証を有効にしたサンプルを見てみます。

認証を使うWebアプリケーションプロジェクトの作成

[新しいプロジェクト]→[ASP.NET Core Webアプリケーション(.NET Core)]
を選択後に表示されるダイアログで、[認証の変更]ボタンを押して、

f:id:autodidact:20170415202506p:plain


個別のユーザーアカウントを選択してOKOKしてプロジェクトを作成します。

f:id:autodidact:20170415202512p:plain

とりあえず実行

前回の認証無しサンプルより色々ファイルが増えています。
とりあえず何も考えずにF5をターンと押して実行します。


f:id:autodidact:20170415202515p:plain

まずユーザー登録したいのでRegisterをクリック。


f:id:autodidact:20170415202519p:plain

ユーザー登録画面が表示されるので、
適当な嘘アドレス、適当なパスワードを入力しRegisterボタンクリック。
パスワードは強度を求められます。大文字小文字英数以外記号を含むくらい。


f:id:autodidact:20170415202528p:plain

DB開けないしってことで、エラーになります。
いきなり実行したのでDBがMigrationによって作成されていないためです。
素直にApply Migrationsボタンをクリック。


f:id:autodidact:20170415202534p:plain

終わったらこんな感じにボタンが変わります。


f:id:autodidact:20170415202538p:plain

もう一度ユーザー登録を試すと今度は登録成功します。
VS2017ならワークロード「データの保存と処理」が未導入の場合は
LocalDBが無いわけだからここで失敗するのかな?ためしてないですが。


因みに私が導入しているワークロードは以下のとおりです。

勝手に作ってくれたDBはどこ?
"ConnectionStrings": {
  "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Sample3-略;Trusted_Connection=True;MultipleActiveResultSets=true"
},

appsettings.jsonを確認すると接続文字列があります。
サンプルは既定でLocalDBを使うようになっています。

LocalDBは開発用SQL Serverデータベースみたいなものです。
別に開発用SQL Serverを導入した場合はここを変更すれば良いかと。


f:id:autodidact:20170415202542p:plain

メニューの[ツール]→[データベースへの選択]で、
Microsoft SQL Serverを選択し、データプロバイダーは
.NET Framework SQL Server 用データ プロバイダーを選択して続行をクリック


f:id:autodidact:20170415202546p:plain

LocalDBはサーバー名の候補に自動で挙がらないみたいなので、
接続文字列通り入力します。
入力後、データベース名は選択可能となるので、
これも接続文字列に指定されているDBを選択してOK。


f:id:autodidact:20170415202549p:plain

サーバーエクスプローラーからDB確認できるようになりました。
ASP.NET Core Identityっぽいテーブルが作成されているのがわかります。


f:id:autodidact:20170415202552p:plain

AspNetUsersテーブルをSELECTすると先ほど作成したテストユーザーが
登録されているのが確認できます。

とりあえず続く。