Domanda

Sto cercando di implementare il controllo di base con alcuni dei miei modelli (come CreatedAt, UpdatedAt, CreatedBy e UpdatedBy).

La parte data / ora è terminata. Sto lanciando eventi sui miei modelli quando una proprietà viene modificata (implementando INotifyPropertyChanging, INotifyPropertyChanged ) e posso aggiornare bene i campi corrispondenti.

Devo solo sapere come ottenere il nome utente corrente senza doverlo passare attraverso il controller ogni volta che creo un'istanza o ottengo un'istanza esistente di un modello.

È stato utile?

Soluzione

  

Riferimento a System.Web e utilizzo   HttpContext.Current.User.Identity.Name   ha funzionato come un fascino.

Non lo sapevo. Grazie. Lo faccio in questo modo:

Membership.GetUser().UserName

In che modo è più veloce?

Altri suggerimenti

Il modo astratto di parlare dell'identità è il "principale" - vedi questa discussione . Spero che questo codice ti consenta di ottenere l'identità senza dover conoscere l'implementazione del login:

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

Fare riferimento a System.Web e usare HttpContext.Current.User.Identity.Name ha funzionato come un fascino.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top