ASP.NET Core コントローラーで現在のユーザーを取得する
ASP.NET Core コントローラー内のユーザー情報にアクセスするには、null 参照例外を回避するために慎重な考慮が必要です。 コントローラーのコンストラクターで HttpContext
を直接使用すると、エラーが発生する可能性があります。
アクション メソッド内でのユーザー データへのアクセス
信頼性の高い方法には、アクション メソッド内でユーザーの詳細を取得し、それらを ViewData
に保存することが含まれます。この例では、リクエストにユーザー Cookie が存在することを前提としています:
<code class="language-csharp">public ActionResult Index() { string userId = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; ViewData["UserId"] = userId; return View(); }</code>
その後、ViewData["UserId"]
アクションに関連付けられたビューで Index
を介してユーザー ID にアクセスします。 null 条件演算子 (?.
) は、FindFirst
が null を返した場合の例外を防ぎます。
コントローラー コンストラクター内のユーザー データへのアクセス
コンストラクターベースのアクセスの場合は、IHttpContextAccessor
インターフェイスを利用します。
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // ... further processing of userId ... }</code>
IHttpContextAccessor
がサービス構成に登録されていることを確認してください:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); }</code>
これらの手法は、ASP.NET Core の現在のユーザー データにアクセスするための堅牢な方法を提供し、ランタイム エラーのリスクを最小限に抑えます。 null 条件演算子を使用して、潜在的な null 値を適切に処理することを忘れないでください。
以上がASP.NET Core コントローラーで現在のユーザーにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。