0

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

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

モデルの既存のインスタンスをインスタンス化または取得するたびに、コントローラーを通過せずに現在のユーザー名を取得する方法を知る必要があります。

4

3 に答える 3

2

System.Webを参照し、HttpContext.Current.User.Identity.Nameを使用することは魅力のように機能しました。

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

Membership.GetUser().UserName

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

于 2009-05-04T18:10:35.723 に答える
2

アイデンティティについて話す抽象的な方法は「プリンシパル」です-このスレッドを参照してください。このコードを使用すると、ログインの実装について知らなくても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();
于 2009-05-04T19:38:08.553 に答える
1

参照System.Webと使用HttpContext.Current.User.Identity.Nameは魅力のように機能しました。

于 2009-05-04T17:38:08.360 に答える