質問

一部のモデル(CreatedAt、UpdatedAt、CreatedBy、UpdatedByなど)で基本的な監査を実装しようとしています。

日付/時刻の部分が完了しました。プロパティが変更されると( INotifyPropertyChanging、INotifyPropertyChanged を実装する)モデルにイベントをスローし、対応するフィールドを正常に更新できます。

モデルのインスタンスを作成または既存のインスタンスを取得するたびにコントローラーを介して渡すことなく、現在のユーザー名を取得する方法を知る必要があります。

役に立ちましたか?

解決

  

System.Webの参照と使用   HttpContext.Current.User.Identity.Name   魔法のように働いた。

私はそれについて知りませんでした。ありがとう。 私は次のようにします:

Membership.GetUser().UserName

どちらの方法が速いですか?

他のヒント

アイデンティティについて話す抽象的な方法は、「プリンシパル」です。 -このスレッドを参照してください。このコードにより、ログインの実装を知らなくてもIDを取得できることを願っています。

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 を使用すると、チャームのように機能しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top