ASP.NET Core コントローラーでの効率的なユーザー アクセス
ユーザーの詳細 (電子メール アドレスなど) へのアクセスは、アプリケーションの機能をパーソナライズするために不可欠です。 ただし、ASP.NET Core コントローラーのコンストラクター内でユーザーに直接アクセスすると、HttpContext
が null である可能性があるため、多くの場合問題が発生します。 これには通常、すべてのアクション メソッドで冗長なユーザー情報の取得が必要となり、効率に影響を与えます。
合理化されたソリューションには、次の使用が含まれます:
<code class="language-csharp">User.FindFirst(ClaimTypes.NameIdentifier).Value</code>
これにより、ユーザーの一意の識別子、つまり電子メールなどのさらなるユーザー データにアクセスするためのキーが簡潔に取得されます。
コンストラクターでのユーザーへのアクセス
コントローラーのコンストラクター内でユーザー アクセスが必要な状況では、次のアプローチをお勧めします。
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
これは IHttpContextAccessor
依存関係に依存しており、アプリケーションの ConfigureServices
メソッド (Startup.cs
または Program.cs
内) に登録する必要があります。
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations }</code>
この設定により、コントローラーのパフォーマンスを損なうことなくユーザー情報に確実にアクセスできるようになります。 潜在的な null 値を適切に処理するために、null 条件演算子 (?.
) を使用していることに注意してください。
以上がASP.NET Core コントローラーで現在のユーザーを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。