記事詳細


投稿日
2025年11月26日00時30分
タイトル

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); 解説

内容

というコードは、現在ログインしているユーザーのIDを取得するためのものです。

1. User オブジェクト

  • コントローラーや Razor ページ内で使える User は、ClaimsPrincipal 型のオブジェクトです。
  • 認証が成功すると、ユーザー情報(クレーム)がこの User に格納されます。

2. クレーム(Claim)

  • クレームとは「ユーザーに関する属性情報」のことです。
  • 例:
    • ユーザーID
    • メールアドレス
    • ロール(管理者、一般ユーザーなど)
  • ClaimTypes.NameIdentifier は、ユーザーを一意に識別するIDを表す標準クレームタイプです。

3. FindFirstValue メソッド

  • 名前空間:System.Security.Claims
  • User.FindFirstValue(type) は、指定したクレームタイプの最初の値を返します。
  • ここでは ClaimTypes.NameIdentifier を指定しているので、ログインユーザーのID文字列が返ります。

4. 動作例

例えば、認証後のクレームが次のようになっているとします:

TypeValue
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier42
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressuser@example.com

この場合、

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
Console.WriteLine(userId); // 出力: 42

となります。

5. 注意点

  • 認証されていない場合や、クレームに NameIdentifier が含まれていない場合は null が返ります。
  • JWT 認証や Cookie 認証で NameIdentifier クレームを発行する設定が必要です。
  • ASP.NET Identity を使っている場合は、デフォルトで NameIdentifier にユーザーIDが入ります。

✅ まとめ
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); は、
「現在ログインしているユーザーの一意なIDをクレームから取得する」
という意味です。

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Controllers
編集 | 記事一覧