asp.net-core - 如何从@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
解决方案
您还可以使用目录服务(使用 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>
推荐阅读
- amcharts - 仅在分组工具提示中显示活动系列(amcharts)
- java - Docker 运行返回异常:应用程序已由更新版本的 Java 运行时编译
- c# - 哪个内置 C# 异常用于检查列表中的已删除项目
- python - 如何通过 GUI (GTK) 与 Python 的对象进行交互?
- php - WordPress wp_nav_menu 在 WordPress 5.6 版本的页眉和页脚文件中不起作用
- angular - 格式化 mat-expansion 面板时遇到问题
- rust - 为什么不可变字符串可以调用 String::add(mut self, other: &str)
- java - protobuf UnusedPrivateParameter 编译错误
- python - 如何使用 sqlalchemy(python 烧瓶)上传图像
- python - Python webscraping 美丽的汤列表错误