ASP.NET IdentityをEntity Frameworkを用いずに利用する方法を調べていたのでまとめです。
例によって今回は準備のみです。
利用環境
- Visual Studio 2015 Community
- ASP.NET Core 1.1
を利用しました。
それ以前(直近)のバージョンでもASP.NET Coreでも動くとは思いますが、確認はしていません。
理解を深める上で用意した方が良いもの
ASP.NET CoreのIdentityはオープンソースになっているので、手元に用意しておくことを強くお勧めします。
(ソースからビルドはしていません。した方が良いのかもしれませんが)
どういったものを作るか
まずは、
- ユーザーIDとパスワードを利用して認証
- クッキーを利用
する認証システムを構築しようと思います。
プロジェクトを作成する
新しいプロジェクトを作成します。
今回はEntityFrameworkを用いたくはないので、"Change Authentication"にて"No Authentication"を選択したままにしておきます。
"Individual User Account"を選択すると、AspNetCore.Identity.EntityFramework を利用したプロジェクトが生成されます。
これはこれで非常に参考になるので、ビューやコントローラーやビューモデルなんかはパクる公然と拝借しようと思います。
(ちなみに上記のIdentityのソース中にあるサンプルサイトと非常によく似た作りになっています。)
フレームワークのアップデートと"Microsoft.AspNetCore.Identity"の追加
出来上がったプロジェクトが利用しているフレームワークを最新のものにアップデートします。
Visual Studio 2017以降ではxprojとproject.jsonは廃止され、csprojを利用することになりましたが、今回はVS2015を利用しているのでproject.jsonを編集します。
(VS2017RCを試しましたが、愛用しているExtentionが未対応だったので戻ってきました)
また、"Microsoft.AspNetCore.Identity"も追加します。
"dependencies": { "BundlerMinifier.Core": "2.2.306", "Microsoft.ApplicationInsights.AspNetCore": "1.0.2", "Microsoft.AspNetCore.Diagnostics": "1.1.0", "Microsoft.AspNetCore.Identity": "1.1.0", "Microsoft.AspNetCore.Mvc": "1.1.0", "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final", "Microsoft.AspNetCore.Routing": "1.1.0", "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0", "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final", "Microsoft.AspNetCore.Server.Kestrel": "1.1.0", "Microsoft.AspNetCore.StaticFiles": "1.1.0", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0", "Microsoft.Extensions.Configuration.Json": "1.1.0", "Microsoft.Extensions.Logging": "1.1.0", "Microsoft.Extensions.Logging.Console": "1.1.0", "Microsoft.Extensions.Logging.Debug": "1.1.0", "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0", "Microsoft.NETCore.App": { "version":"1.1.0", "type": "platform" }, "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0", "StackifyMiddleware": "2.0.3" },
"Microsoft.NETCore.App"の"type"がなくてもいい時とないとビルドエラーになるときがあるようです。
Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'.
というエラーが出た場合は、"type"を追加すると直るかもしれません。
また、プロファイラとしてStackify Prefixを利用します。
準備はここまで
次回から実装していきます。
まずは外部DBを使わずにインメモリで認証機構を作ります。