Практическое руководство. Доступ к ролям пользователей с помощью служб клиентских приложений

Обновлен: Ноябрь 2007

Клиентские службы приложений позволяют извлекать данные ролей из существующей службы ролей ASP.NET AJAX. Дополнительные сведения о настройке службы ролей см. в разделе Использование информации ролей с помощью ASP.NET AJAX.

Ниже описывается, как получить доступ к данным о ролях пользователей, прошедших проверку подлинности в приложении Windows Forms, настроенном на использование службу ролей. Дополнительные сведения см. в разделе Практическое руководство. Настройка служб клиентских приложений. Для этой процедуры требуется доступ к действующей службе ролей ASP.NET AJAX. Советы по тестированию функций клиентских служб приложений см. в разделе Пошаговое руководство. Использование служб клиентских приложений.

Чтобы определить принадлежность пользователя к определенной роли

  • Вызовите метод IsInRole ссылки IPrincipal, извлеченной из свойства static Thread.CurrentPrincipal. Этот метод возвращает значение Boolean, которое можно использовать для предоставления доступа к определенным функциям, как показано в следующем примере. Этот метод вернет значение false, если пользователь не прошел проверку или не принадлежит к указанной роли.

    Метод IsInRole осуществляет внутренний доступ к удаленной службе ролей посредством класса ClientRoleProvider. Можно получить прямой доступ к классу ClientRoleProvider, но как правило применяется непрямой доступ, как показано в следующем коде. Дополнительные сведения см. в разделе Общие сведения о службах клиентских приложений.

    В следующем примере предполагается, что приложение содержит компонент элемент управления Button под названием managerOnlyButton.

    If System.Threading.Thread.CurrentPrincipal.IsInRole("manager") Then
    
        managerOnlyButton.Visible = True
    
    End If
    
    if (System.Threading.Thread.CurrentPrincipal.IsInRole("manager"))
    {
        managerOnlyButton.Visible = true;
    }
    

Отказоустойчивость

В примере кода в этом разделе показано простейшее применение проверки службы ролей в клиентском приложении Windows. При доступе к ролям пользователей посредством служб клиентских приложений код может создать WebException, если служба недоступна. Пример обработки этой ошибки WebException см. в разделе Пошаговое руководство. Использование служб клиентских приложений.

Кроме того, метод IsInRole всегда возвращает false, если имя пользователя больше не действует. Этого не происходит, если приложение вызывает метод IsInRole однократно, вскоре после проверки подлинности. Если приложению нужно извлечь роли пользователя в другое время, можно добавить код для повторной проверки пользователей, если их имена пользователей не действуют. Если все действующий пользователи назначены ролям, для определения того, действует ли имя пользователя, можно вызвать метод ClientRoleProvider.GetRolesForUser. Если ни одна роль не возвращается, имя пользователя истекло и недействительно. Пример такой функциональности см. в методе GetRolesForUser. Эта функциональность требуется только в том случае, если в конфигурации приложения был выбран параметр Требовать повторного входа пользователей при истечении "cookie" на сервере. Дополнительные сведения см. в разделе Практическое руководство. Настройка служб клиентских приложений.

См. также

Задачи

Практическое руководство. Настройка служб клиентских приложений

Пошаговое руководство. Использование служб клиентских приложений

Основные понятия

Общие сведения о службах клиентских приложений

Использование информации ролей с помощью ASP.NET AJAX

Ссылки

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

Другие ресурсы

Службы клиентских приложений