首页 > 解决方案 > 在 Blazor 页面的 OnInitializedAsync() 中访问 c​​ontext.User

问题描述

Blazor 的组件 AuthorizeView 可以显示用户身份名称。

<AuthorizeView>
    <Authorized>
        @context.User.Identity.Name
    </Authorized>
</AuthorizeView>

如何在 Blazor 页面的 OnInitializedAsync() 方法中访问 User 变量?

IHttpContextAccessor 不是一个选项,因为 Microsoft 坚持,您不得在 Blazor 应用程序中使用 IHttpContextAccessor

标签: c#blazorblazor-server-side

解决方案


尝试这个:

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包的引用


推荐阅读