Ich möchte in den authentifizierten Benutzern zusätzliche Informationen speichern, so dass ich es (wie User.Identity.Id, zum Beispiel) leicht zugänglich machen kann, anstatt nur den Namen, da ich mit bin die Planung, dass nicht eindeutig.Wie implementiere ich benutzerdefinierte Principal und Identity in ASP.NET MVC?
Bisher habe ich gesammelt, dass ich aussehen soll benutzerdefinierte Auftraggeber und/oder Identität zu implementieren, aber ich bin nicht sicher, wie es geht. Ich habe nach Dokumentation und Tutorials zu diesem Thema gesucht, aber ich habe ähnliche Sachen an verschiedenen Orten gefunden und ich fand es ein wenig verwirrend.
Ich habe gesehen, wie benutzerdefinierte Informationen zum Authentifizierungscookie in der Benutzerdateneigenschaft hinzugefügt werden, aber ich hätte gerne den Vorteil der Abhängigkeitsinjektion für Komponententests, die ich mit dem Prinzipal und der Identität haben kann.
Was sind die genaue Schritte muss ich prüfen, ob ich möchte, dass meine eigene Haupt oder Identität implementieren?
Was die einfachste wäre ich in diesem Szenario tun könnte (nur die ID hinzufügen und alle Standardeinstellungen in Position halten)? "Defaults" würde die Standardanbieter (Mitgliedschaft, Rollen usw.) enthalten.
Ich habe die other question gesehen, aber ich würde gerne Antworten, die keine Lücken dazwischen lassen, wie die Rollen magic strings im AuthenticateRequest-Ereignis in den Beispielen. Stattdessen muss ich wissen, wie ich dem aktuellen Benutzer die Rollen aus dem Standard-SqlRoleProvider hinzufügen kann: wann und wo und wann muss ich etwas anderes tun, um meine neuen Klassen mit den anderen Standardanbietern zu verbinden.
Es wäre fantastisch sein, um zu einer Probe ASP.NET MVC 2 Anwendung zu gehen (von der Bildvorlage Studio 2010, zum Beispiel), um die Änderungen zu machen und nutzen.
EDIT: ich die Frage besser zu zeigen bearbeitet haben, dass ich ziemlich bin verloren hier, also kann ich nicht mit einem zu hohen Niveau Antworten behelfen.
S.S .: Es scheint mir, dass es mehr Sinn macht, die ID in der Identity zu haben, anstatt auf den Principal, obwohl ich das in gewisser Weise bereits gesagt habe.
Haben Sie zur Zeit Formularauthentifizierung und Rollen eingerichtet? –
tue ich. Ich habe mit einer MVC-Webanwendung (im Gegensatz zu einer MVC * Empty * -Webanwendung) aus den VS 2010-Vorlagen begonnen. Daher enthält sie alle Standard-SQL-Anbieter für die Benutzerverwaltung: Mitgliedschaft und Rollen enthalten. Aber das meiste ist hinter Vorhängen gemacht. Durch Konvention, sozusagen –
können Sie nicht einfach die Profile-Unterstützung für diese Art von Sache verwenden? Das ist, was es ist (zusätzliche Daten mit dem Benutzer verbunden) - sollte einfacher sein als zu versuchen, einen "benutzerdefinierten Benutzer" Ich würde denken, –