ホームページ >バックエンド開発 >C++ >ASP.NET Core で現在のユーザーの ID を確実に取得する方法

ASP.NET Core で現在のユーザーの ID を確実に取得する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-13 12:23:43563ブラウズ

How to Reliably Retrieve the Current User's Identity in ASP.NET Core?

ASP.NET Core で現在のユーザー情報を安全に取得する

現在ログインしているユーザーの ID を知ることは、安全でパーソナライズされた ASP.NET Core アプリケーションを構築するために重要です。 HttpContext.User プロパティは、認証されたユーザーに関する豊富なクレームを提供します。

ただし、コントローラーのコンストラクター内で HttpContext に直接アクセスすると、HTTP リクエスト コンテキストが設定されるにコンストラクターが実行されるため、多くの場合 null 結果が返されます。

ベスト プラクティス: アクション メソッドでのユーザー ID へのアクセス

最も信頼できる方法は、コントローラーのアクション メソッド内でユーザー ID の詳細を取得することです。 これにより、リクエストの処理中に HttpContext にユーザー データが適切に設定されることが保証されます。

たとえば、ユーザーの ID を取得するには:

<code class="language-csharp">public ActionResult Index()
{
    string userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

    // Further processing of user ID and claims...

    return View();
}</code>

代替: コンストラクター アクセスに IHttpContextAccessor を使用する

コントローラーのコンストラクター内でユーザー ID 情報が必要な場合は、IHttpContextAccessor インターフェースを利用します。このインターフェイスは、コントローラーのライフサイクル段階に関係なく、現在の HTTP コンテキストへのアクセスを提供します。

これを実装する方法は次のとおりです:

  1. IHttpContextAccessor をコントローラーのコンストラクターに挿入します。
  2. HttpContext プロパティ経由でユーザーの要求にアクセスします。
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor)
{
    string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

    // Subsequent use of user ID and claims...
}</code>

IHttpContextAccessor メソッドに Startup.ConfigureServices を忘れずに登録してください:

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other services
}</code>

null 条件演算子 (?.) を使用すると、HttpContext またはクレームが null の場合の例外を防ぐことができます。 アクションメソッドへのアクセスの信頼性を優先して、ニーズに最も適したメソッドを選択してください。

以上がASP.NET Core で現在のユーザーの ID を確実に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。