モデルクラス内でユーザー名を取得する
-
03-07-2019 - |
質問
一部のモデル(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
を使用すると、チャームのように機能しました。
所属していません StackOverflow