Erhalten Sie den Benutzernamen in einer Modellklasse
-
03-07-2019 - |
Frage
Ich versuche, mit einigen meiner Modellen grundlegende Revision zu implementieren (wie CreatedAt, UpdatedAt, CreatedBy und UpdatedBy).
Das Datum / Zeit-Teil ist fertig. Ich werfe Ereignisse auf meine Modelle, wenn eine Eigenschaft (implementierende INotifyPropertyChanging, INotifyPropertyChanged
) geändert wird und kann die entsprechenden Felder in Ordnung aktualisieren.
Ich muss nur wissen, wie die aktuellen Benutzernamen zu erhalten, ohne es durch den Controller ich instanziiert oder bekommen eine bestehende Instanz eines Modells jedes Mal passieren zu müssen.
Lösung
Referenzierung System.Web und mit HttpContext.Current.User.Identity.Name wie ein Charme.
Ich wusste nicht, über sie. Vielen Dank. Ich mache es wie folgt aus:
Membership.GetUser().UserName
Welcher Weg ist schneller?
Andere Tipps
Die abstrakte Art und Weise über Identität spricht, ist das „Kapital“ - siehe dieses Thema . Ich hoffe, dass dieser Code ermöglicht es Ihnen, die Identität zu erhalten, ohne über die Login-Implementierung kennen:
public static class SomeUtilityClass {
public static string GetUsername() {
IPrincipal principal = Thread.CurrentPrincipal;
IIdentity identity = principal == null ? null : principal.Identity;
return identity == null ? null : identity.Name;
}
}
...
record.UpdatedBy = record.CreatedBy = SomeUtilityClass.GetUsername();
Referenzierung System.Web
und mit HttpContext.Current.User.Identity.Name
arbeitete wie ein Charme.