Question

J'essaie d'implémenter l'audit de base avec certains de mes modèles (comme CreatedAt, UpdatedAt, CreatedBy et UpdatedBy).

La partie date / heure est terminée. Je lance des événements sur mes modèles lorsqu'une propriété est modifiée (implémentation de INotifyPropertyChanging, INotifyPropertyChanged ) et peut parfaitement mettre à jour les champs correspondants.

J'ai juste besoin de savoir comment obtenir le nom d'utilisateur actuel sans le transmettre par le contrôleur chaque fois que j'instancie ou récupère une instance existante d'un modèle.

Était-ce utile?

La solution

  

Référencement de System.Web et utilisation de   HttpContext.Current.User.Identity.Name   travaillé comme un charme.

Je ne savais pas à ce sujet. Merci. Je le fais comme ça:

Membership.GetUser().UserName

Quel est le chemin le plus rapide?

Autres conseils

La manière abstraite de parler d'identité est le "principal". - consultez ce fil . J'espère que ce code vous permettra d'obtenir l'identité sans avoir à connaître l'implémentation de la connexion:

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();

Référencer System.Web et utiliser HttpContext.Current.User.Identity.Name a fonctionné comme un charme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top