2016-04-22 20 views
18

Sto cercando di implementare l'autenticazione ASP.net tramite il SignInManager ma senza l'EntityFramework. Ho creato il mio livello di database utilizzando SQLClient e voglio solo creare le chiamate necessarie per far funzionare l'autenticazione ASP.net.Come usare ASP.net originale 1 "SignInManager" senza EntityFramework

Il codice che ho è (eseguito dalla Startup.cs) come segue:

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

e ho bisogno di rimuovere la dipendenza Entity Framework (e chiamare i miei metodi di db per la raccolta di dati utente). Qualcun altro ha fatto qualcosa di simile nel core ASP.net?

Grazie in anticipo per eventuali suggerimenti! :-)

+0

Solo curioso, hai implementato senza ef? se avete qualche campione potete per favore postarlo. Grazie – Swamy

risposta

37

Per lo meno, ti consigliamo di implementare IUserStore<ApplicationUser>, IUserPasswordStore<ApplicationUser>, e IRoleStore<ApplicationUser> in qualsiasi modo si vede in forma, e registrarli con l'IServiceCollection. Ci sono alcune altre interfacce che potresti voler implementare per ottenere la piena funzionalità di identità (IUserClaimsStore, IUserPhoneNumberStore, IUserLockoutStore, ecc. - you can find the whole list on GitHub).

Infine, non dimenticare di rimuovere le registrazioni di servizio EF!

Ho messo insieme un esempio veramente di base in memoria here. È molto veloce e sporco, quindi non consiglierei di trarre troppa ispirazione da esso. Se vuoi davvero vedere una corretta implementazione, here is how the actual EF version is implemented!

+0

Grazie per aver riavuto @MatthewKing. Sto lottando per implementare senza un esempio. Conoscete qualche esempio online usando Core 1 senza EF? Grazie –

+1

Non conosco esempi esistenti @RobMcCabe, ma proverò a mettere un esempio veloce nel prossimo giorno o così se potrò avere un po 'di tempo. – MatthewKing

+3

@RobMcCabe Ho modificato la mia risposta per includere un esempio di base REALMENTE che dovrebbe iniziare. Sta solo dimostrando l'idea generale usando un elenco in memoria come archivio dati, ma dovresti essere in grado di vedere come collegare il tuo database da lì! Spero che aiuti. – MatthewKing