現在ログインしているユーザーの役割や電子メールなどの情報が必要ですが、ログに記録されている間、クレームを使用する。だから、基本的には、私がユーザーについて何か必要なときに毎回データベースを検索する必要があります。どのように私はそのようなものを実装することができますか?私はIDをどこかに格納することを考え、それに基づいて情報を調べることを考えましたが、私はいくつかの「よりクーラーな」方法があると考えています。Asp.Net Core 2.0でクレームを使わないでログに記録されたユーザーに関する情報を取得する方法
0
A
答えて
1
ページのUser
プロパティを使用してください。現在ログインしている人のユーザ名を含む内部プロペラがIdentity
です。また、現在ログインしているユーザーのユーザーIDを見つけるのに役立つ拡張メソッドGetUserId()
もあります。 ユーザーIDがあれば、データベースを参照してそのユーザーに関する詳細情報を検索できます。
は抽出currecntユーザIDを緩和することができ、次のコードを考えてみましょう:あなたはその情報は後日更新することができる場合でも、ユーザーに関する情報を取得するためにクレームを使用することができます
public static string ValidateAndGetUserId(IIdentity identity)
{
if (identity == null)
throw new ApplicationException("No User is logged in");
var userId = identity.GetUserId();
if (string.IsNullOrWhiteSpace(userId))
throw new ApplicationException("No User is logged in");
return userId;
}
1
。
あなたが更新した情報を保存した後、再びログインするだけです。&クレームは新しい情報で更新されます。例えば
:
ユーザーが訪れる "アカウント" ページ。
ユーザーが自分の情報を変更した後、&が保存ボタンをクリックします。
あなたのコントローラでは、ユーザー情報を保存した直後に再度ログインするだけです。ここで
は私が現時点で働いているMVC 5アプリの例ですが、アイデアはまだasp.netコアのために働く必要があります。
// POST: MyAccount
[Authorize(Roles = "Admin,Host,User")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> MyAccount([Bind(Include = "FirstName,LastName,Email,Phone,Country,State,TimeZone")] MyAccountVM vm)
{
var id = User.Identity.GetUserId();
if (ModelState.IsValid)
{
var user = await UserManager.FindByIdAsync(id);
if (user == null)
{
return HttpNotFound();
}
user.FirstName = vm.FirstName;
user.LastName = vm.LastName;
user.Email = vm.Email;
user.UserName = vm.Email;
user.Phone = vm.Phone;
user.Country = vm.Country;
user.State = vm.State;
user.TimeZone = vm.TimeZone;
var result = await UserManager.UpdateAsync(user);
if (result.Succeeded)
{
var currentUser = await UserManager.FindByIdAsync(user.Id);
if (currentUser != null)
{
await SignInManager.SignInAsync(currentUser, isPersistent: false, rememberBrowser: false);
}
TempData["saved"] = "true";
return RedirectToAction("MyAccount");
}
}
return View();
}
+0
これは実際には本当に面白いです。私はすでに私の仕事を提出しましたが、私はこれを将来に留めておきます。ありがとうございました。 – Megid
関連する問題
- 1. スケジュールタスクでログに記録されたユーザーを取得する - Spring
- 2. 春のセキュリティでログに記録されたユーザーを取得する最も良い方法は何ですか?
- 3. プログラムでElmahでエラーをログに記録する:特定の情報をログに記録する
- 4. ユーザスクリプトでアラートを使わずに情報を記録する方法
- 5. asp.net coreユーザーにクレームを追加する方法
- 6. ログに記録されたユーザーと情報を保存する場所はどこですか
- 7. Javaでより優れた例外情報をログに記録する
- 8. Playフレームワーク60秒遅れのある情報をログに記録
- 9. ASP.NET Core 2.0で、例外がスローされたときにSerilogを使用してスタックトレースを記録する
- 10. ASP.NET Core MVC OAuth 2.0でアクセストークンの値を取得する方法
- 11. ノードで行われたすべてのhttp.requestをログに記録する方法
- 12. IdentityServer 3とASP.NET ID:ユーザー情報を取得する方法
- 13. MySQLストアドプロシージャの例外情報をログに記録する
- 14. JNDI LDAPに記録されたユーザー情報
- 15. ログに記録されましたが、ログに記録されたユーザーのページにアクセスできませんか?
- 16. MATLABプログラムで使用される関数名をログに記録
- 17. ログに情報がないIISからERR_CONNECTION_RESETを取得する
- 18. アンドロイドでログ情報を取得する方法
- 19. 「キャッチされた」例外をログに記録する方法は?
- 20. デプロイされたアプリケーションをログに記録する方法
- 21. ユーザーIDでfacebookのユーザー情報を取得する方法android
- 22. Zend1でアップロードされたファイル情報を取得する方法
- 23. ReharperでユニットテストプロジェクトからNHibernate情報をログに記録
- 24. logback-androidを使用するとログが記録されない
- 25. パスワードなしでWordPressユーザーをログに記録するには
- 26. システム情報を取得する方法が記載されています
- 27. ログインしている現在のユーザーとログに記録されたユーザーを確認する方法
- 28. ブラウザの情報をユーザーに記録するのが悪いですか?
- 29. iOSでユーザー情報を取得する
- 30. クレームIDからグループ情報を取得
ああ、私は知りませんでしたGetUserId()について私はID(私はアイデンティティを使用していない、クッキーのみ)を要求していますが、Idは何も関係なく変更されないので大丈夫です。ありがとうございました。 – Megid