Können Sie verlängern HttpContext.Aktuelle.Benutzer.Die Identity-Eigenschaft
Gibt es eine Möglichkeit zum überschreiben HttpContext.Current.User.Identity
zum hinzufügen einer weiteren Eigenschaft (screen name)?
Meine Anwendung verwendet Identity
und ich habe die einzigartige Identität als E-Mail. I speichern von user-Daten, wie vor - /Nachnamen in einer separaten "Profile"
Tabelle. Gibt es eine Möglichkeit, diese Informationen zu speichern, die irgendwo in HttpContext.Current
?
Es muss nicht unbedingt sein müssen, innerhalb User
. Ich habe eine Suche und bemerkt, dass sich ein HttpContext.Current.ProfileBase
. Nicht sicher, wie es zu benutzen, obwohl - und ich wirklich nicht wollen alle das überschüssige Zeug, die Basis kommt mit.
- Wie ich verstehe Sie haben unterschiedliche Tabellen mit zusätzlichen Daten der Benutzer. Und Sie wollen Holen des aktuellen Benutzers Daten. Bin ich im Recht? Verwenden Sie Entity Framework? Und die Art und Weise, die Sie bevorzugen speichern dieser Daten in eine andere Tabelle?
User
ist wirklich nur eineIPrincipal
undIdentity
ist nurIIdentity
. Sie können einfach erstellen Sie Ihre eigene Implementierung derUser
mit eigenen UmsetzungIdentity
. Sie brauchen nur zu halten, um die Schnittstellen.- Da bist du mit Asp.Net Identität, die Art und Weise zu tun, ist mit Forderungen. Siehe meine Antwort unten geschrieben.
- Danke, ich Teste die Antworten heute Abend und akzeptieren, dass man dann
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit Asp.Net Identität, dann ist dies sehr einfach zu tun mit Ansprüchen.
In Ihrem
SignInAsync
- Methode (oder wo auch immer Sie erstellen, die Ansprüche der Identität), Beurteilung derGivenName
undSurname
fallarten:Verwenden Sie dann eine extension-Methode zu
IIdentity
ziehen Sie die Informationen aus, die Forderungen Identität:Dann, in Ihrer Anwendung (im controller oder view), können Sie nur:
Name
Eigenschaft?Name
Eigenschaft von was? Können Sie noch weitere Details?HttpContext.Current.User.Identity.Name
. Siehe auch diese Frage, die ich.Können Sie die Wert in HttpContext.Aktuelle.Elemente.
Es ist Wörterbuch, das Leben ist eine einzige Anfrage.
Können Sie es verwenden, wie diese:
Wird ausgeführt, ResolveScreenName() nur einmal für eine einzige Anfrage.
Auch Sie können extension-Methode auf dem Bildschirm Namen von IIdentity
Und dann verwenden Sie es wie diese:
Fand ich eine Implementierung:
Dann später...
Absolut! Sie müssen erstellen Sie Ihre eigene Art, die aus
IPrincipal
, und nehmen Sie über Sicherheit selbst. Sie können die Authentifizierung der Benutzer in einer OWIN Schritt, ist die manuelle Einstellungcontext.Request.User
.