2016-04-22 17 views
18

SignInManager経由でEntityFrameworkを使用せずにASP.net認証を実装しようとしています。 SQLClientを使用して独自のデータベースレイヤーを構築し、ASP.net認証を行うために必要な呼び出しを作成したいだけです。ASP.net Core 1 "SignInManager"をEntityFrameworkなしで使用する方法

私が持っているコードは次のように(Startup.csから実行)である:

// Add EF services to the services container. 
services.AddEntityFramework() 
    .AddSqlServer() 
    .AddDbContext<OAuthAppDbContext>(opt => opt.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); 

// Add Identity services to the services container. 
services.AddIdentity<ApplicationUser, ApplicationRole>(options => 
{ 
    options.Cookies.ApplicationCookieAuthenticationScheme = "ApplicationCookie"; 
    options.Cookies.ApplicationCookie.AuthenticationScheme = "ApplicationCookie"; 
    options.Cookies.ApplicationCookie.CookieName = "oAuthInterop"; 
    options.Cookies.ApplicationCookie.AutomaticChallenge = true; 
    options.Cookies.ApplicationCookie.AutomaticAuthenticate = true; 
    options.Cookies.ApplicationCookie.DataProtectionProvider = new DataProtectionProvider(new DirectoryInfo("d:\\development\\artefacts"), 
     configure => 
     { 
      configure.SetApplicationName("TestAuthApp"); 
      //configure.ProtectKeysWithCertificate("thumbprint"); 
     }); 
}) 
    .AddEntityFrameworkStores<OAuthAppDbContext, int>() 
    .AddDefaultTokenProviders(); 

と私は、Entity Frameworkの依存度を削除(およびユーザの詳細を収集するための私自身のDBメソッドを呼び出す)する必要があります。他の誰かがASP.netコアで何か似たようなことをしましたか?

ありがとうございました! :-)

+0

好奇心が強い、あなたはefなしで実装しましたか?サンプルがあれば投稿してください。ありがとう – Swamy

答えて

37

少なくとも、IUserStore<ApplicationUser>,IUserPasswordStore<ApplicationUser>、およびIRoleStore<ApplicationUser>を適切に実装し、それらをIServiceCollectionに登録したいと思うでしょう。完全なアイデンティティ機能(IUserClaimsStore、IUserPhoneNumberStore、IUserLockoutStoreなど - you can find the whole list on GitHub)を取得するために実装したいと思ういくつかのインタフェースがあります。

最後に、EFサービス登録を削除することを忘れないでください!

私は本当に基本的なメモリ内の例hereをまとめました。本当に素早く汚れているので、あまりインスピレーションを得ようとは勧めません。あなたが本当に適切な実装を見たい場合は、here is how the actual EF version is implemented

+0

@MatthewKingを取り返してくれてありがとう。私は例がなくて実装するのに苦労している。 EFなしでCore 1を使用しているオンラインの例を知っていますか?おかげで –

+1

私は既存の例@RobMcCabeを知りませんが、私はいくつかの時間を得ることができる場合は、次の日に一緒に簡単な例を試してみましょう。 – MatthewKing

+3

@RobMcCabe私は自分の答えを編集して、あなたが始めなければならない本当に基本的な例を含めました。メモリ内のリストをデータストアとして使用するという一般的なアイデアを実証するだけですが、そこから独自のデータベースをどのようにプラグインするかを理解できるはずです。私はこれが役立つことを願っています – MatthewKing