【问题标题】:Is there any way to get EmployeeID in .NET Core without third party libraries?有没有办法在没有第三方库的情况下在 .NET Core 中获取 EmployeeID?
【发布时间】:2019-10-14 10:01:52
【问题描述】:

我曾经使用 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


    【解决方案1】:

    好的,看起来像 .NET Core 2> 微软再次实现了 Principal Context 库,尽管文档说单击 .NET Core 2.2 时没有页面。至少,我能够安装该软件包并且它可以工作。它是由 Microsoft 创作的,所以我不认为它是第三方。

    https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.DirectoryServices.AccountManagement

    感谢这个答案,幸运的是能够找到包裹:https://stackoverflow.com/a/49773749/5245385

    代码与我的问题完全相同。所有功能似乎完好无损。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,但是我了解如何使用依赖注入来获取控制器以外的其他类中的 HttpContext 对象。我想知道是否有办法获取员工 ID(不是 httpcontext 上的用户上下文提供的用户名),因为据我了解,数据点特定于 Active Directory。
      • 我们可能谈论的是同一件事,我可能只是不知道如何从 HttpContext 获取我正在寻找的活动目录信息,因为我只真正处理了 UserPrincipal 类在 .NET 中。您可以在此链接docs.microsoft.com/en-us/dotnet/api/… 上看到它说该类在 Core 2.2 中不可用
      • 所以我处理这个问题的方法是使用“声明”机制。它允许您根据编码方式从 HttpContext 添加和提取特定声明。具体添加方式取决于您选择的身份验证方法
      • 目前选择的方法是windows认证。在launchSettings.json 中,我将iisSettings 设置为:windowsAuthentication:true,anonymousAuthentication:false。服务的 Startup.cs 中没有其他设置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 2010-12-10
      • 2011-06-04
      • 2012-05-04
      • 1970-01-01
      • 2012-07-25
      • 2011-07-03
      相关资源
      最近更新 更多