Identity.Name is always null on the client: the access token names the user in unique_name, the client reads name
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 75/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- csharp
調査の方向性
IAuthTokenProvider.ParseAccessToken から始めてください。ここでクライアントの ClaimsPrincipal が nameType: "name" を指定して作成されているので、サーバーが書き込む claim 名(unique_name)と比較してください。名前がどのように読み取られるかは ClaimsPrincipalExtensions.GetUserName() と AuthManager.KeepActiveAccount を確認してください。サインイン済みユーザーに対してクライアント上で Identity.Name が null でなく、既存の認証テストがすべて通れば完了です。
索引モデルが issue の本文から書いたものです。
説明
The server writes the access token with JwtSecurityTokenHandler, which writes ClaimTypes.Name under its short name unique_name (its DefaultOutboundClaimTypeMap). IAuthTokenProvider.ParseAccessToken builds the client's ClaimsPrincipal with nameType: "name", so on the client Identity.Name is null for every signed-in user.
The client's authentication state comes from that principal, so context.User.Identity.Name in an AuthorizeView and AuthenticationState.User.Identity.Name are null as well. In the template itself, AuthManager.KeepActiveAccount takes the kept account's UserName from it, so an account whose profile hasn't been loaded is kept with no user name. Most of the template doesn't notice, because ClaimsPrincipalExtensions.GetUserName() reads both ClaimTypes.Name and unique_name.
The parsed principal's name type should be the claim the server writes, so Identity.Name holds the user's name on the client as it does on the server.
- 主要言語
- C#
- スター
- 1.4k
- フォーク
- 264
- 平均マージ
- 8時間 58分
- マージ済み PR(30日)
- 579
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
bitfoundation/bitplatform のほかの issue
-
area / templates
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
bitfoundation/bitplatform#15109 ·
メンテナーはふだん 1 日以内に返信
-
area / templates
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
bitfoundation/bitplatform#15108 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
bitfoundation/bitplatform#15105 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 12/100
bitfoundation/bitplatform#15100 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
bitfoundation/bitplatform#15097 ·
メンテナーはふだん 1 日以内に返信
bitfoundation/bitplatform の issue をすべて見る
似ている issue
-
ready-for-agent tech-debt
難易度 1/5 1〜3時間 初心者へのやさしさ 85/100
DigiBanks99/menlo#640 ·
メンテナーはふだん 1 日以内に返信
-
ci
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
OpenTabletDriver/OpenTabletDriver#5283 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
aikido critical security
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
dequelabs/axe-core-nuget#305 ·
-
:watch: Not Triaged dotnet-fundamentals/svc install/subsvc
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信