Есть ли способ получить EmployeeID в .NET Core без сторонних библиотек? - PullRequest
1 голос
/ 28 мая 2019

Раньше я использовал класс UserPrincipal для получения информации активного каталога о пользователе, в частности о EmployeeId (а не имени пользователя, мы обычно не используем его для привязки сотрудников к конкретным точкам данных в sql). Однако в ядре .net такого класса не существует, и я все еще довольно новичок в ядре .net, поэтому я не уверен, как много его функций работает в настройках интрасети. Я знаю, что многие, вероятно, не будут работать с кроссплатформенным ядром asp.net и другими типами серверов, не имеющих представления об активной директории.

Ниже приведен код, который я использую в обычной среде asp.net для получения идентификатора сотрудника.

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 может транспортировать некоторую информацию, которая мне нужна через претензии? Я пытался проводить исследования, но каждая вещь просто приводит меня к новым направлениям исследований, и я не уверен, с чего начать.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

То, что вы сейчас ищете, перемещено в Net Core. Принципал пользователя живет по HttpContext, но вы получаете доступ через IHttpContextAccessor, который внедряется с помощью внедрения зависимостей. Это пример от Microsoft начальной точки для него: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-2.2

0 голосов
/ 29 мая 2019

Хорошо, похоже на .net core 2> Microsoft снова внедрила библиотеку 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

Код такой же, как и в моем вопросе.Вся функциональность кажется нетронутой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...