Получение имени пользователя внутри класса модели
-
03-07-2019 - |
Вопрос
Я пытаюсь внедрить базовый аудит с некоторыми моими моделями (такими как CreatedAt, updatedAt, CreatedBy и updatedBy).
Дата / время завершены. Я генерирую события в моих моделях при изменении свойства (реализуя INotifyPropertyChanging, INotifyPropertyChanged
) и могу обновлять соответствующие поля очень хорошо.
Мне просто нужно знать, как получить текущее имя пользователя без необходимости передавать его через контроллер каждый раз, когда я создаю экземпляр или получаю существующий экземпляр модели.
Решение
Ссылки на System.Web и использование HttpContext.Current.User.Identity.Name работал как шарм.
Я не знал об этом. Благодарю. Я делаю это так:
Membership.GetUser().UserName
Какой способ быстрее?
Другие советы
Абстрактный способ говорить об идентичности - это "принципал" - см. эту тему . Я надеюсь, что этот код позволит вам получить удостоверение личности, не зная о реализации входа в систему:
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();
Ссылка System.Web
и использование HttpContext.Current.User.Identity.Name
работали как шарм.