記事詳細
- 投稿日
- 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. 動作例
例えば、認証後のクレームが次のようになっているとします:
Type Value http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier42http://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
- コントローラーや Razor ページ内で使える
-
添付画像
-
画像はありません
- Genreのカテゴリ-名
- Controllers