c# - 在 Blazor 页面的 OnInitializedAsync() 中访问 context.User
问题描述
Blazor 的组件 AuthorizeView 可以显示用户身份名称。
<AuthorizeView>
<Authorized>
@context.User.Identity.Name
</Authorized>
</AuthorizeView>
如何在 Blazor 页面的 OnInitializedAsync() 方法中访问 User 变量?
IHttpContextAccessor 不是一个选项,因为 Microsoft 坚持,您不得在 Blazor 应用程序中使用 IHttpContextAccessor。
解决方案
尝试这个:
var state = await this.GetAuthenticationStateAsync();
ClaimsPrincipal authenticationStateProviderUser = state.User;
获取特定信息使用:
internal static string GetEmail(this ClaimsPrincipal claimsPrincipal)
=> claimsPrincipal.FindFirstValue(ClaimTypes.Email);
要使用FindFirstValue
你需要添加对Microsoft.Extensions.Identity.Core
包的引用
推荐阅读
- javascript - setState() 函数不起作用,我无法更新我的状态。我怎么解决这个问题?
- amazon-elastic-beanstalk - AWS 路由 53 配置为指向 Elastic BeanStalk URL
- pandas - 需要帮助获取按患者 ID 分组的最小和最大日期之间的差异,仅使用 Python
- optimization - 为 SQL 数据库和面向服务的架构优化 GraphQL 解析器
- npm - 将 jhipster 从 v5.0.1 升级到最新
- reactjs - 你如何突出显示 React Dev Tools V4 中的更新?
- python - 套接字消息传递客户端/服务器:客户端不发送消息
- java - POM.XML ISSUE : 项目构建错误解析表达式 ${browser.name} 在 browser.name 中检测到以下递归表达式循环
- java - 仅按钮背景 在一个按钮上更新
- django - 使用 django 将带有阿拉伯字符的 html 导出为 pdf