来自 AuthenticationStateProvider 的用户 ID 显示为空
Posted
技术标签:
【中文标题】来自 AuthenticationStateProvider 的用户 ID 显示为空【英文标题】:UserID from AuthenticationStateProvider appears empty 【发布时间】:2022-01-05 14:15:37 【问题描述】:我正在使用 AspNetCore Identity 并尝试使用 AuthenticationStateProvider 获取当前登录用户的 UserID。我正在将输出记录到控制台,但是用户名输出正常,但 ID 显示为空。 db 表中的 ID 字段不为空。在打印所有声明时,subs 字段似乎是正确的 ID。我是否错误地检索了 ID?从我发现的另一篇文章中建议了检索 ID 的方法;代码如下所示。如何使用 AuthenticationStateProvider 在我的页面中检索作为用户 ID 的 sub 值?提前致谢。
检索用户 ID
var user = (await ASP.GetAuthenticationStateAsync()).User;
var UserStringId = user.FindFirst(c => c.Type.Equals(user.Identity.Name))?.Value;
浏览器控制台输出
USER ID: blazor.webassembly.js:1
NAME: user4@gmail.com
循环声明时,Sub 是正确的 ID
var user = (await ASP.GetAuthenticationStateAsync()).User;
var item = user.Claims;
foreach(var x in item)
Console.WriteLine(x);
浏览器控制台输出
s_hash: EQ_bVJS8n32qtUam0wZ1MA
sid: 2E6B597CC9644CFEFDD627532B761F02
sub: 5685a830-cb82-4b60-b459-c0852cc74563 // trying to retrieve this ID
//...
preferred_username: user4@gmail.com
name: user4@gmail.com
【问题讨论】:
【参考方案1】:试试:
user.FindFirst(c => c.Type == "sub")?.Value
【讨论】:
感谢您的建议。打印到浏览器控制台时,用户 ID 仍然显示为空。 成功了。非常感谢!以上是关于来自 AuthenticationStateProvider 的用户 ID 显示为空的主要内容,如果未能解决你的问题,请参考以下文章
为啥 WCF 服务能够处理来自不同进程的调用而不是来自线程的调用
来自 viewDidAppear 的 Segue 调用有效,但不是来自 viewWillAppear