Identity.Name is always null on the client: the access token names the user in unique_name, the client reads name
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 75/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- csharp
- Lĩnh vực
- authentication
Hướng nghiên cứu
Bắt đầu từ IAuthTokenProvider.ParseAccessToken, nơi ClaimsPrincipal của client được tạo với nameType: "name", rồi so sánh với tên claim mà server ghi (unique_name). Kiểm tra ClaimsPrincipalExtensions.GetUserName() và AuthManager.KeepActiveAccount để xem tên được đọc như thế nào. Hoàn thành khi Identity.Name không null đối với người dùng đã đăng nhập trên client và các bài kiểm thử xác thực hiện có vẫn pass.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- C#
- Star
- 1.4k
- Fork
- 264
- Merge trung bình
- 8 giờ 58 phút
- Pull request đã merge (30 ngày)
- 579
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của bitfoundation/bitplatform
-
area / templates
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
bitfoundation/bitplatform#15109 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area / templates
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
bitfoundation/bitplatform#15108 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
bitfoundation/bitplatform#15105 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 12/100
bitfoundation/bitplatform#15100 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
bitfoundation/bitplatform#15097 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của bitfoundation/bitplatform
Issue tương tự
-
ready-for-agent tech-debt
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 85/100
DigiBanks99/menlo#640 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ci
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
OpenTabletDriver/OpenTabletDriver#5283 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
aikido critical security
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
dequelabs/axe-core-nuget#305 ·
-
:watch: Not Triaged dotnet-fundamentals/svc install/subsvc
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày