2016-04-22 7 views
18

Ich bin auf der Suche nach ASP.net Authentifizierung über den SignInManager, aber ohne die EntityFramework zu implementieren. Ich habe meine eigene Datenbankschicht mit SQLClient erstellt und möchte nur die erforderlichen Aufrufe erstellen, damit die ASP.net-Authentifizierung funktioniert.Wie man ASP.net Core 1 "SignInManager" ohne EntityFramework verwendet

Der Code, den ich habe, ist als (von der Startup.cs ausgeführt) folgt:

// 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(); 

und ich brauche das Entity Framework Vertrauen (und rief meine eigenen db Methoden zum Sammeln von Benutzerdaten) zu entfernen. Hat jemand sonst etwas Ähnliches in ASP.net Core gemacht?

Vielen Dank im Voraus für alle Zeiger! :-)

+0

Nur neugierig, haben Sie ohne ef implementiert? wenn Sie irgendein Beispiel haben, können Sie es bitte bekannt geben. Danke – Swamy

Antwort

37

Zumindest möchten Sie IUserStore<ApplicationUser>, IUserPasswordStore<ApplicationUser> und IRoleStore<ApplicationUser> in jeder Weise implementieren, die Sie für richtig halten, und sie mit Ihrer IServiceCollection registrieren. Es gibt einige andere Schnittstellen, die Sie möglicherweise implementieren möchten, um die vollständige Identitätsfunktionalität zu erhalten (IUserClaimsStore, IUserPhoneNumberStore, IUserLockoutStore usw. - you can find the whole list on GitHub).

Schließlich, vergessen Sie nicht, Ihre EF-Service-Registrierungen zu entfernen!

Ich habe ein wirklich grundlegendes In-Memory-Beispiel here zusammengestellt. Es ist wirklich schnell und dreckig, also würde ich nicht empfehlen, zu viel Inspiration daraus zu ziehen. Wenn Sie wirklich eine korrekte Implementierung sehen möchten, here is how the actual EF version is implemented!

+0

Danke für die Rückkehr @MatthewKing. Ich kämpfe, ohne ein Beispiel zu implementieren. Kennen Sie online Beispiele mit Core 1 ohne EF? Danke –

+1

Ich kenne keine vorhandenen Beispiele @RobMcCabe, aber ich werde versuchen und ein schnelles Beispiel zusammensetzen am nächsten Tag oder so, wenn ich etwas Zeit bekommen kann. – MatthewKing

+3

@RobMcCabe Ich habe meine Antwort so bearbeitet, dass sie ein wirklich einfaches Beispiel enthält, das Ihnen den Einstieg erleichtern soll. Es zeigt lediglich die allgemeine Idee, eine In-Memory-Liste als Datenspeicher zu verwenden, aber Sie sollten sehen können, wie Sie Ihre eigene Datenbank von dort aus anschließen würden! Ich hoffe das hilft. – MatthewKing

Verwandte Themen