Получение имени пользователя внутри класса модели - PullRequest
0 голосов
/ 04 мая 2009

Я пытаюсь реализовать базовый аудит с некоторыми моими моделями (такими как CreatedAt, updatedAt, CreatedBy и updatedBy).

Дата / время завершены. Я генерирую события в моих моделях, когда свойство изменяется (реализует INotifyPropertyChanging, INotifyPropertyChanged), и могу обновлять соответствующие поля просто отлично.

Мне просто нужно знать, как получить текущее имя пользователя без необходимости пропускать его через контроллер каждый раз, когда я создаю экземпляр или получаю существующий экземпляр модели.

Ответы [ 3 ]

2 голосов
/ 04 мая 2009

Ссылка на System.Web и использование HttpContext.Current.User.Identity.Name работал как шарм.

Я не знал об этом. Благодарю. Я делаю это так:

Membership.GetUser().UserName

Какой путь быстрее?

2 голосов
/ 04 мая 2009

Абстрактный способ говорить об идентичности - это «принципал» - см. в этой теме . Я надеюсь, что этот код позволит вам получить личность, не зная о реализации входа в систему:

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();
1 голос
/ 04 мая 2009

Ссылка System.Web и использование HttpContext.Current.User.Identity.Name работали как шарм.

...