How to use ASP.net Core 1 "SignInManager" without EntityFramework

asp.net asp.net-mvc c# entity-framework

Question

I'm looking to implement ASP.net authentication via the SignInManager but without the EntityFramework. I have built my own database layer using SQLClient and want to just create whatever calls is needed in order to make ASP.net authentication work.

The code I have is as follows (executed from the 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();

and I need to remove the Entity Framework reliance (and call my own db methods for gathering user details). Has anyone else done something similar in ASP.net core?

Thanks in advance for any pointers! :-)

1
23
4/22/2016 12:47:55 PM

Accepted Answer

At the very least, you'll want to implement IUserStore<ApplicationUser>, IUserPasswordStore<ApplicationUser>, and IRoleStore<ApplicationUser> in any way you see fit, and register them with your IServiceCollection. There are a few other interfaces you might want to implement to get the full identity functionality (IUserClaimsStore, IUserPhoneNumberStore, IUserLockoutStore, etc. - you can find the whole list on GitHub).

Finally, don't forget to remove your EF service registrations!

I've put together a really basic in-memory example here. It's really quick and dirty, so I wouldn't recommend trying to take too much inspiration from it. If you really want to see a proper implementation, here is how the actual EF version is implemented!

42
6/18/2019 9:22:29 AM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow