読者です 読者をやめる 読者になる 読者になる

ASP.NET Core MVC にて、Entity Frameworkを使わずにASP.NET Identityを利用する Part.0(準備編)

ASP.NET IdentityをEntity Frameworkを用いずに利用する方法を調べていたのでまとめです。

例によって今回は準備のみです。

利用環境

を利用しました。
それ以前(直近)のバージョンでもASP.NET Coreでも動くとは思いますが、確認はしていません。

理解を深める上で用意した方が良いもの

ASP.NET CoreのIdentityはオープンソースになっているので、手元に用意しておくことを強くお勧めします。
(ソースからビルドはしていません。した方が良いのかもしれませんが)

github.com

どういったものを作るか

まずは、

  • ユーザーIDとパスワードを利用して認証
  • クッキーを利用

する認証システムを構築しようと思います。

プロジェクトを作成する

新しいプロジェクトを作成します。

今回はEntityFrameworkを用いたくはないので、"Change Authentication"にて"No Authentication"を選択したままにしておきます。

"Individual User Account"を選択すると、AspNetCore.Identity.EntityFramework を利用したプロジェクトが生成されます。
これはこれで非常に参考になるので、ビューやコントローラーやビューモデルなんかはパクる公然と拝借しようと思います。
(ちなみに上記のIdentityのソース中にあるサンプルサイトと非常によく似た作りになっています。)

f:id:mrgchr:20161126124040p:plain

フレームワークのアップデートと"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を利用します。

mrgchr.hatenablog.com

準備はここまで

次回から実装していきます。

まずは外部DBを使わずにインメモリで認証機構を作ります。

mrgchr.hatenablog.com