首页 > 解决方案 > 有没有办法在没有第三方库的情况下在 .NET Core 中获取 EmployeeID?

问题描述

我曾经使用 UserPrincipal 类来检索用户的活动目录信息,特别是 EmployeeId(不是用户名,我们通常不使用它来将员工与 sql 中的特定数据点联系起来)。但是,在 .net 核心中,该类不存在,而且我对 .net 核心还很陌生,所以我不确定它的很多功能在 Intranet 设置中如何工作。我知道很多人可能无法使用跨平台的 asp.net 核心和其他不知道活动目录的服务器类型。

下面是我在常规 asp.net 环境中用于获取员工 ID 的代码。

var userContext = System.Web.HttpContext.Current;
PrincipalContext pcxt = new PrincipalContext(ContextType.Domain, "mydomain.com");
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pcxt, IdentityType.SamAccountName, userContext.User.Identity.Name);
return uPrincipal.EmployeeId;

我可以使用什么样的代码来获取相同的信息?没有第三方库可以吗?看来 IIS 服务器可能会通过声明传输我需要的某种信息?我试图做研究,但每件事都会让我走上更多的研究道路,我不知道从哪里开始。

标签: c#asp.net-core

解决方案


您现在要查找的内容已移至 Net Core。用户主体位于 HttpContext 上,但您可以通过使用依赖注入注入的 IHttpContextAccessor 进行访问。这是 Microsoft 的一个示例:https ://docs.microsoft.com/en-us/aspnet /core/fundamentals/http-context?view=aspnetcore-2.2


推荐阅读