web-dev-qa-db-ja.com

EntityFrameworkなしでASP.net Core 1 "SignInManager"を使用する方法

SignInManagerを介してASP.net認証を実装しようとしていますが、EntityFrameworkを使用していません。 SQLClientを使用して独自のデータベースレイヤーを構築し、ASP.net認証を機能させるために必要な呼び出しを作成したいと考えています。

私が持っているコードは次のとおりです(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コアで同様のことをしましたか?

ポインタを事前にありがとう! :-)

23
Rob McCabe

少なくとも、 IUserStore <ApplicationUser>IUserPasswordStore <ApplicationUser> 、および IRoleStore <ApplicationUser> を任意の方法で実装する必要があります必要に応じて、IServiceCollectionに登録します。完全なID機能を取得するために実装する可能性のある他のインターフェイスがいくつかあります(IUserClaimsStore、IUserPhoneNumberStore、IUserLockoutStoreなど。- リスト全体はGitHubにあります )。

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

本当に基本的なメモリ内の例 here をまとめました。それは本当に速くて汚いので、そこからインスピレーションを取りすぎることはお勧めしません。本当に適切な実装を確認したい場合は、 これが実際のEFバージョンの実装方法です

42
Matthew King