Как получить текущие данные из Windows Active Directory - PullRequest
0 голосов
/ 07 февраля 2020

Я пытался получить данные текущего пользователя из Windows Active Directory с помощью веб-приложения .NetCore C#, но не смог их показать. Я попытался отладить, и я подтвердил, что мой код уже связан с моим доменом, потому что я мог гарантировать свое имя пользователя и данные электронной почты в режиме отладки.

Вот мой файл "Index.cs html .cs"

namespace Employees.Pages
{
    public class IndexModel : PageModel
    {
        public void OnGet()
        {
            var username = User.Identity.Name;



            using (var context =new PrincipalContext(ContextType.Domain, "my Domain"))
            {
                var user = UserPrincipal.FindByIdentity(context, username);
                if (user != null)
                {
                    ViewData["UserName"] = user.Name;
                    ViewData["EmailAddress"] = user.EmailAddress;
                }
            }
        }
    }

Вот мой файл "Index.cs html":

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}



    <p>@ViewData["EmployeeName"]</p>

1 Ответ

1 голос
/ 07 февраля 2020

Я мог проверить это в шаблоне проекта basi c, когда сделал это с azure active directory. Проверьте ниже:

@using System.Security.Claims
@if (User.Identity.IsAuthenticated)
{
    var identity = User.Identity as ClaimsIdentity; // Azure AD V2 endpoint specific
    string preferred_username = identity.Claims.FirstOrDefault(c => c.Type == "name")?.Value;

Это изменилось в Visual Studio 2019. Это то, что я сейчас использую:

@using System.Security.Principal

<ul class="nav navbar-nav navbar-right loginpartial">
@if (User.Identity.IsAuthenticated)
{
        <li class="nav-item">
            <span class="navbar-text text-dark">Hello @User.Identity.Name.Substring(0,User.Identity.Name.IndexOf("@"))!</span>
        </li>
...