SignInManager, was ist es und wie, wann zu verwenden?
Ich bin erkunden SignInManager Klasse. Aber die Informationen auf der MSDN-Website ist sehr sinnlos. Es sagt nur, was sind die Methoden und Eigenschaften zur Verfügung gestellt.
Was ich Suche, ist,
1) Was ist SignInManager?
2) Wie es zu benutzen?
3) Und ich habe meine eigene Datenbank, enthält die Anmeldeinformationen-Informationen(Benutzernamen und Passwörter)
Wie kann ich SignInmanager und wie es so meine Gewohnheit-Datenbank verwendet, für die Authentifizierung der Benutzer?
Ich bin mit asp.net MVC 5 und Visual Studio 2015. In meinem Beispielprojekt habe ich Konten-controller, enthält action-Methoden wie
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
Aber ich habe keine Ahnung, wie es zu benutzen, MSDN komplett nutzlos zu bieten, Informationen auf dieser. Jeder hilfreiche links, die erklärt, im Detail, weil ich keine Ahnung habe, was SignInManager ist und was es ist.
Dank
InformationsquelleAutor der Frage Alex | 2016-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Disclaimer: ich bin verwirrt Modell ASP.NET Identität mich und was ich sage, ist mein Verständnis der Dinge, die ungenau sein kann (ich könnte auch unter Angabe offensichtliche Dinge, so möchte ich mich entschuldigen). Auch war ich mit dem spielen Asp.Net Kern, die Identität, vor kurzem, die ist etwas anders im Vergleich zu was verfügbar war, für Asp.Net 4, so kann ich Sie aufmischen.
Cookies
ASP.NET Identität arbeitet mit zwei Arten von cookies: Anwendung Cookies und Externe cookie. Application-cookie, das die Anwendung enthält die Identität und ist ausgestellt von sign-in-manager. Externe cookie enthält externe Authentifizierungsanbieter Identität und ist ausgestellt von Authentifizierungs-middleware (wie
FacebookAuthenticationMiddleware
zum Beispiel). Verwenden Sie sign in manager zu konsumieren, die externe cookie-und Ausgabe Anwendung-cookie statt. Wenn Sie nicht die externe Authentifizierung verwenden Sie befassen sich nicht mit externen cookies.Anmelden manager
Klasse erklärt wie diese:
So können Sie alle Klasse wie Ihr user so lange, wie es implementiert
IUser<TKey>
- Schnittstelle. Oder verwenden SieIdentityUser
als Ihre Basis, wenn Sie von vorne beginnen, was implementiertIUser<string>
. In der Vergangenheit habe ich versucht, eine Implementierung, die verwendetint
alsTKey
aber Versuch aufgegeben, nachdem er einige Zeit versucht, es zu schaffen und nicht sehen keine Fortschritte.Passwort anmelden
SignInManager.SignInAsync
Methode, Fragen der Anwendung-cookie für den angegebenen Benutzer sofort und ohne irgendwelche Prüfungen, also, wenn Sie implementieren benutzerdefinierte Authentifizierung Logik, möchten Sie vielleicht, es zu benutzen (Standard asp.net MVC-Vorlage verwendet es nach der Registrierung Benutzer, so dass Sie nicht haben, sich zu authentifizieren sofort nach der Registrierung).SignInManager.PasswordSignInAsync
gegeben, den Benutzernamen und das Kennwort überprüft deren Wirksamkeit und Probleme, application-cookie, wenn Sie korrekt sind.Externe anmelden
Anstatt den Benutzer zu erstellen, login und Passwort für Ihre Website speziell für Sie möglicherweise möchten, dass Sie verwenden einige externe Website zu authentifizieren, und übergeben Sie die Authentifizierung von Informationen, um Sie mit OAuth.
Asp.Net Identität Begriff der
User
undLogin
woUser
ist... naja, Benutzer (einer person), undLogin
ist die Anmeldeinformationen, mit denenUser
authentifiziert.User
haben möglicherweise mehrereLogin
s.OAuth-flow aus Asp.Net web-Seite sieht wie folgt aus (basierend auf dem Standard-Protokoll in der Strömung erzeugt, indem die VS-Vorlage):
FacebookAuthenticationMiddleware
mit app-ID und app-secret Facebook bietet Ihnen mit).ChallengeResult
mit dem Namen des Anbieters verwendet werden (dies geschieht in der Regel inAccountController.ExternalLogin
), Rückgabe-URL einstellen, zu nennenAccountController.ExternalLoginCallback
und der tatsächlichen Rückgabe-URL-user soll in den gespeichert für später.ChallengeResult
Objekt und wandelt es in HTTP-redirect-Antwort, die bewirkt, dass browser, gehen Sie zu der Website von Drittanbietern, die fordert Benutzer zur Eingabe der Anmeldeinformationen./signin-facebook
IIRC).AccountController.ExternalLoginCallback
).AccountController.ExternalLoginCallback
Sie werden erwartet, zu konsumieren, die externe cookie und Ausgabe einer Anwendung cookie statt. Das ist es, wasSignInManager.ExternalSignInAsync
hat: da die log-in Informationen, die es versucht, Benutzer mit, dassLogin
. Wenn es feststellt, dass es Probleme Anwendung cookie; wenn es nicht tut, informiert er Sie, und Sie sollten tun, was Sie denken, ist richtig, wenn Sie erhalten, unbekanntLogin
(normalerweise erstellen Sie neue Benutzer an dieser Stelle. Default-Implementierung von VS-Vorlage fragt für weitere Infos an dieser Stelle und erstellt Benutzer inAccountController.ExternalLoginConfirmation
). Nach, dass Benutzer umgeleitet wird, um den tatsächlichen return-URL "für später aufgehoben" in Schritt 4.Benutzerdefinierte Speicher
Habe ich schon erfolglos so weit mit dem erstellen der custom-Speicher für Asp.Net Identität. Es beinhaltet in der Regel die Umsetzung Ihrer eigenen user-manager-Klasse absteigen der
UserManager<TUser, TKey>
- und storage-Klasse die Reihe von Schnittstellen wieIUserStore<TUser, TKey>
IUserRoleStore<TUser, TKey>
usw.InformationsquelleAutor der Antwort n0rd