ASP.Net Core Identity でログインユーザIDを取得
探してもなかなか見つからなかったので自分用メモ。
コントローラクラスの引数に IHttpContextAccessor
のインスタンスを渡して httpContextAccessor.HttpContext.User.FindFirst
メソッドで探すらしい。あまり理解してません。
戻り値の型は Claim
で、 Claim.Value
でユーザIDが取得できる。未ログインの時には null が返ってくるのでチェックが必要。
下記のコードはログインしているかどうかチェックして、未ログインの時にはホーム画面にリダイレクト、ログインしているときには何かクエリを実行してビューに渡す例です。一応自分の環境では動作しました。
class SomeController : Controller {
private readonly Claim _claim;
// コンストラクタ
public SomeController(IHttpContextAccessor httpContextAccessor)
{
_claim = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier);
}
// GET:
public async Task<IActionResult> Index()
{
if(_claim == null)
{ // ログインしてないときにはホーム画面にリダイレクト
return RedirectToAction("Index", "Home");
}
// ユーザID取得
string userId = _claim.Value;
// ユーザIDを使ってクエリとかして...
var query = // ...
// ビューに渡す
return View(await query.ToListAsync());
}
参考にしたリンク
その他参考
こちらのQAだと Controller.User を使っている。こちらの方がコードがシンプルかも。
Author And Source
この問題について(ASP.Net Core Identity でログインユーザIDを取得), 我々は、より多くの情報をここで見つけました https://qiita.com/_meki/items/c82a132ccfef11ab3064著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .