首页 > 解决方案 > 如何从@context.User 获取用户的名字或姓氏?

问题描述

我使用 Windows 身份验证创建了一个服务器端 Blazor 应用程序。它创建了以下文件。

登录显示.razor

<AuthorizeView>
    Hello, @context.User.Identity.Name!
</AuthorizeView>

但是,它显示“域\用户名”。这是一种显示用户名字的方法吗?

我尝试打印所有索赔类型。

@foreach(var c in context.User.Claims)
{
    <p>@c.Value @c.Type</p>
}

但是,其中只有一种带有名称的类型。(值为DOMAIN\username

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

标签: asp.net-corerazoractive-directoryblazorasp.net-authorization

解决方案


您还可以使用目录服务(使用 NuGet 安装)按如下方式使用它。

_Imports.razor

@using System.DirectoryServices.AccountManagement

登录显示.razor

<AuthorizeView>
    @{
        var pcontext = new PrincipalContext(ContextType.Domain, "XYZ.net", "DC=XYZ,DC=net");
        var principal = UserPrincipal.FindByIdentity(pcontext, context.User.Identity.Name);
    }    
    Hello, @principal.GivenName @principal.Surname!
</AuthorizeView>

推荐阅读