获取模型类中的用户名

时间:2009-05-04 16:59:50

标签: c# asp.net-mvc model audit

我正在尝试使用我的一些模型(如CreatedAt,UpdatedAt,CreatedBy和UpdatedBy)实现基本审核。

日期/时间部分已完成。当属性发生变化时,我会在我的模型上抛出事件(实现INotifyPropertyChanging, INotifyPropertyChanged)并且可以更新相应的字段。

我只需要知道如何获取当前用户名,而不必在每次实例化或获取模型的现有实例时都将其传递给控制器​​。

3 个答案:

答案 0 :(得分:2)

  

引用System.Web并使用   HttpContext.Current.User.Identity.Name   像魅力一样工作。

我不知道。谢谢。 我是这样做的:

Membership.GetUser().UserName

哪种方式更快?

答案 1 :(得分:2)

谈论身份的抽象方式是“主体” - 见this thread。我希望这段代码可以让你在不必知道登录实现的情况下获得身份:

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

答案 2 :(得分:1)

引用System.Web并使用HttpContext.Current.User.Identity.Name就像魅力一样。