ASP.NET Core コントローラーのコンストラクター内で現在のユーザーにアクセスすると、null
の HttpContext
値が存在する可能性があるため、問題が発生する可能性があります。この記事では、繰り返し呼び出しを行わずにユーザー情報を効率的に取得するための効果的なソリューションを紹介します。
HttpContext.User.GetUserId()
を使用する一般的なアプローチは、コンストラクター内で失敗します。ユーザーデータの取得を最適化するには、一元化された方法が推奨されます。
これに対処する方法は次のとおりです:
コントローラー アクション内: HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value
を使用してユーザー ID を取得します。
コンストラクター内 (IHttpContextAccessor を利用):
IHttpContextAccessor
を含めて、ConfigureServices
に登録します。IHttpContextAccessor
をコントローラーのコンストラクターに挿入し、次のようにユーザー ID にアクセスします。<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
潜在的な null 値を適切に処理するために、null 条件演算子 (?.
) が追加されていることに注意してください。 これにより、User
または FindFirst
が null を返した場合の例外が防止されます。
以上がASP.NET Core コントローラー コンストラクターで現在のユーザーにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。