我曾经使用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服务器可能通过声明传输了我需要的某种信息?我曾尝试进行研究,但每件事都使我走上了更多的研究途径,而且我不确定从哪里开始。
答案 0 :(得分:1)
您现在要寻找的东西已经转移到Net Core中。 User Principal位于HttpContext上,但是您可以通过IHttpContextAccessor进行访问,该IHttpContextAccessor是使用依赖项注入注入的。这是Microsoft的示例,其起点是:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-2.2
答案 1 :(得分:0)
好的,对于.net core 2来说看起来像是>尽管文档说单击.NET Core 2.2时没有页面,但是Microsoft再次实现了Principal Context库。至少,我能够安装该软件包并且它可以工作。它是由Microsoft创作的,因此我不认为它是第三方。
https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.DirectoryServices.AccountManagement
幸运的是,由于以下答案,我们找到了包裹:https://stackoverflow.com/a/49773749/5245385
代码与我的问题完全相同。所有功能似乎都完好无损。