Практическое руководство. Реализация входа и выхода пользователя из системы с помощью служб клиентских приложений
Обновлен: Ноябрь 2007
Можно использовать службы клиентских приложений для проверки пользователей посредством существующей службы профилей ASP.NET AJAX. Сведения о настройке службы профилей ASP.NET AJAX см. в разделе Использование проверки подлинности с помощью форм в ASP.NET AJAX.
Ниже описывается, как проверить пользователей с помощью службы проверки подлинности, когда приложение настроено для использования одного из поставщиков служб проверки подлинности. Дополнительные сведения см. в разделе Практическое руководство. Настройка служб клиентских приложений.
Обычно все проверки проводятся с помощью метода static Membership.ValidateUser. Этот метод управляет взаимодействием со службой проверки подлинности посредством настроенного поставщика проверки подлинности. Дополнительные сведения см. в разделе Общие сведения о службах клиентских приложений.
Для процедур проверки подлинности в формах требуется доступ к запущенной службе проверки подлинности ASP.NET AJAX. Советы по тестированию функций клиентских служб приложений см. в разделе Пошаговое руководство. Использование служб клиентских приложений.
Для проверки пользователя в формах с помощью поставщика учетных данных выполните следующие действия.
Реализуйте интерфейс 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; } }
Вызовите метод 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