Die Anpassung der OWIN/Katana UserManager Fabrik Verhalten
Gibt es viele Proben online mit OWIN/Katana finden die Benutzer in einer Datenbank basierend auf ausername/Passwort-Kombination und erzeugen eine forderungsprinzipal, wie...
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);
//generate claims here...
Das ist in Ordnung, wenn Sie erstellen eine neue Anwendung und möchten Entity Framework, die Drecksarbeit zu machen. Aber, ich habe einen acht Jahre alten monolithischen web-site, die gerade aktualisiert wurde, um die anspruchsbasierte Authentifizierung verwenden. Unsere Datenbank Treffer erfolgt manuell via DAL/SQL und dann die "ClaimsIdentity" - erzeugt von dort aus.
Manche Menschen sind darauf hindeutet, dass OWIN ist einfacher zu bedienen als unsere manuelle Ansatz, aber ich würde gerne ein wenig input von denen, die es verwenden.
Ist es möglich, zu ändern, wie der UserManager Fabrik findet Benutzer auf Grundlage Ihrer Anmeldeinformationen? Oder gibt es einen anderen Ansatz, den ich verpasst habe? Alle Beispiele, die ich online finden kann, scheint die Verwendung einer vorformulierten Ansatz, dass Entity Framework die Datenbank erstellen und zu verwalten sucht.
- Ja, Sie können anpassen, wie der UserManager verhält. Die Art und Weise wird es Ihre Daten ist durch die Umsetzung des
IUserStore
. Hier eine Antwort, die Ihnen helfen können, aus, wie dies anzupassen. stackoverflow.com/questions/19940014/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
ASP.NET Identität ist ein wenig zu Komplex, würde ich sagen.
Im August 2014 haben Sie angekündigt, die neue version 2.1 und die Dinge haben sich wieder geändert.
Zuerst von allen lassen Sie uns loszuwerden
EntityFramework
:Nun implementieren wir unsere eigene definition von
User
Implementierung der SchnittstelleIUser
(Microsoft.AspNet.Identität):Wie Sie sehen können, habe ich definiert den Typ der meine
Id
(int).Dann haben Sie zum definieren von benutzerdefinierten
UserManager
Erben vonMicrosoft.AspNet.Identity.UserManager
Angabe Ihrer Benutzer-Typ und den Schlüssel geben.Habe ich schon umgesetzt mein Validierung Regeln hier, aber Sie können halten Sie es außerhalb, wenn Sie bevorzugen.
UserManager
braucht eineUserStore
(IUserStore).Definieren Sie Ihre DB-Logik hier. Es gibt einige Schnittstellen zu implementieren. Nicht alle von Ihnen sind obligatorisch, obwohl.
Ich habe nicht alle Methoden für jede Schnittstelle. Sobald Sie getan haben, dass Sie werde in der Lage sein zu schreiben Sie Ihre neue Benutzer:
Holen von Id:
und so weiter.
Dann müssen Sie definieren Ihre
SignInManager
Erben vonMicrosoft.AspNet.Identity.Owin.SignInManager
.Habe ich nur implementiert
SignInAsync
: es erzeugt eine "ClaimsIdentity" -.Das ist ziemlich viel es.
Nun in Ihrem
Startup
Klasse, die Sie zu erzählen habenOwin
wie dieUserManager
und dieSignInManager
.Ich habe nicht verwendet die Fabriken finden Sie in der Standard-Vorlage, denn ich wollte die Dinge so einfach wie möglich.
Aktivieren und Ihre Anwendung für die Verwendung der Cookies:
Nun in Ihrem Konto controller - oder controller-verantwortlich für die Anmeldung - Sie haben, um die
UserManager
und dieSignInManager
:Verwenden Sie die
SignInManager
für die Anmeldung:und die
UserManager
um den Benutzer zu erstellen, hinzufügen von Rollen und Ansprüche:Scheint es zu erschweren ... und es ist ... eine Art.
Wenn Sie möchten, um mehr darüber zu Lesen gibt es eine gute Erklärung hier und hier.
Wenn Sie möchten ausführen von code und sehen, wie es funktioniert, ich habe zusammen einige code die Werke mit Biggy (da wollte ich nicht verschwenden zu viel Zeit Tabellen definieren und so ein Zeug).
Wenn Sie die chance haben, den download mein code aus dem github-repo, werden Sie feststellen, dass ich erstellt habe, eine sekundäre Projekt (Custom.Identität), wo ich gehalten habe, alle meine ASP.NET Identität Zeug.
Nur nuget Pakete es gibt: