В Xamarin UWP приложений, Как получить в настоящее время Windows, вошедшей в деталях пользователя - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно использовать проверку подлинности Windows в моем приложении Xamarin UWP. Как я могу получить доступ к текущим вошедшим в систему данным пользователя в приложении. Необходимо получить идентификатор входа в Active Directory пользователя, который в настоящее время вошел в Windows.

Я уже попробовал приведенное ниже решение, и оно дает пустые результаты для меня.

Как я могу получить имя пользователя или идентификатор текущего пользователя, вошедшего в систему в приложении UWP

Ценю вашу помощь ....

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Вот пример UWP , который использует ADAL. ADAL.NET не раскрывает непосредственно понятие пользователя из контекста аутентификации. Он предоставляет UserInfo как свойство AuthenticationResult. Когда вы получите результат аутентификации, вы можете использовать свойство UserInfo, чтобы получить отображаемый идентификатор вошедшего в систему пользователя.

Вот еще что-то из ADAL wiki .

0 голосов
/ 10 июля 2018

Это довольно просто. Вы должны сделать это на уровне платформы, используя Windows.System.User, чтобы получить информацию о текущем пользователе. Вот пост , в котором подробно описывается, как это сделать.

0 голосов
/ 10 мая 2018

Если вы не добавили Информация об учетной записи пользователя к своему приложению в Package.appxmanifest, у вас не будет разрешения на доступ к информации об учетной записи пользователя.

enter image description here

По другим причинам, если вы аутентифицировались с помощью hotmail, вам нужно KnownUserProperties.FirstName и KnownUserProperties.LastName, чтобы получить имя вашей учетной записи.

private async void GetUser()
{
    IReadOnlyList<User> users = await User.FindAllAsync();

    var current = users.Where(p => p.AuthenticationStatus == UserAuthenticationStatus.LocallyAuthenticated &&
                                p.Type == UserType.LocalUser).FirstOrDefault();

    // user may have username
    var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
    string displayName = (string)data;

    // authinticated using hotmail 
    if (String.IsNullOrEmpty(displayName))
    {

        string a = (string)await current.GetPropertyAsync(KnownUserProperties.FirstName);
        string b = (string)await current.GetPropertyAsync(KnownUserProperties.LastName);
        displayName = string.Format("{0} {1}", a, b);
    }
}

Обратите внимание, что приведенный выше код работает только в собственном проекте UWP, и его нельзя использовать непосредственно в pcl, вам нужно создать метод GetUser через DependencyService.

Update

Если вы авторизовались с помощью ADAL, вы можете использовать метод AcquireTokenSilentAsync для получения информации из кэша токена в режиме без вывода сообщений, подробнее см. this .

...