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

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

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

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

Обычно все проверки проводятся с помощью метода static Membership.ValidateUser. Этот метод управляет взаимодействием со службой проверки подлинности посредством настроенного поставщика проверки подлинности. Дополнительные сведения см. в разделе Общие сведения о службах клиентских приложений.

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

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

  1. Реализуйте интерфейс IClientFormsAuthenticationCredentialsProvider. В следующем примере кода показана реализация IClientFormsAuthenticationCredentialsProvider.GetCredentials для класса окна входа, производного от System.Windows.Forms.Form. В этом окне есть текстовые поля для имени пользователя и пароля, а также флажок "Запомнить меня". Когда поставщик проверки подлинности клиента вызывает метод GetCredentials, отображается форма. Когда пользователь заполняет данные в окне и нажимает кнопку "ОК", указанные значения возвращаются в новом объекте ClientFormsAuthenticationCredentials.

    Public Function GetCredentials() As  _
        ClientFormsAuthenticationCredentials Implements _
        IClientFormsAuthenticationCredentialsProvider.GetCredentials
    
        If Me.ShowDialog() = DialogResult.OK Then
            Return New ClientFormsAuthenticationCredentials( _
                UsernameTextBox.Text, PasswordTextBox.Text, _
                rememberMeCheckBox.Checked)
        Else
            Return Nothing
        End If
    
    End Function
    
    public ClientFormsAuthenticationCredentials GetCredentials()
    {
        if (this.ShowDialog() == DialogResult.OK)
        {
            return new ClientFormsAuthenticationCredentials(
                usernameTextBox.Text, passwordTextBox.Text,
                rememberMeCheckBox.Checked);
        }
        else
        {
            return null;
        }
    }
    
  2. Вызовите метод static Membership.ValidateUser и передайте пустые строки в качестве значений параметров. При указании пустых строк этот метод выполняет внутренний вызов метода GetCredentials для поставщика учетных данных, настроенных для приложения. В следующем примере кода этот метод вызывается для ограничения доступа ко всему приложению Windows Forms. Этот код можно добавить в обработчик Form.Load.

    If Not System.Web.Security.Membership.ValidateUser( _
        String.Empty, String.Empty) Then
    
        MessageBox.Show("Unable to authenticate.", "Not logged in", _
            MessageBoxButtons.OK, MessageBoxIcon.Error)
        Application.Exit()
    
    End If
    
    if (!System.Web.Security.Membership.ValidateUser(
        String.Empty, String.Empty))
    {
        MessageBox.Show("Unable to authenticate.", "Not logged in",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        Application.Exit();
    }
    

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

  • Вызовите метод static Membership.ValidateUser и передайте в качестве значений введенные пользователем имя пользователя и пароль.

    If Not System.Web.Security.Membership.ValidateUser( _
        usernameTextBox.Text, passwordTextBox.Text) Then
    
        MessageBox.Show("Unable to authenticate.", "Not logged in", _
                MessageBoxButtons.OK, MessageBoxIcon.Error)
        Application.Exit()
    
    End If
    
    if (!System.Web.Security.Membership.ValidateUser(
        usernameTextBox.Text, passwordTextBox.Text))
    {
        MessageBox.Show("Unable to authenticate.", "Not logged in",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        Application.Exit();
    }
    

Для использования проверки подлинности Windows выполните следующие действия.

  • Вызовите метод static Membership.ValidateUser и передайте пустые строки для параметров. Этот вызов метода всегда будет возвращать true и будет добавлять файл "cookie", содержащий удостоверение Windows.

    System.Web.Security.Membership.ValidateUser( _
        String.Empty, String.Empty)
    
    System.Web.Security.Membership.ValidateUser(
        String.Empty, String.Empty);
    

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

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

См. также

Задачи

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

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

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

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

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

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

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