Добавлен: 26.05.2023
Просмотров: 76
Скачиваний: 3
СОДЕРЖАНИЕ
1. Теоретические аспекты изучения клиентских программ
1.1. Обзор программных средств для создания баз данных
1.2. Использование служб клиентских приложений
2.Создание клиентского приложения
2.1.Создание узла служб приложений
2.2.Настройка членства и ролей
2.3. Добавление проверки подлинности с помощью форм
Элементы authenticationService, profileService, и roleService в данном коде предназначены для включения и настройки служб приложений. В целях тестирования атрибуту requireSSL элемента authenticationService присвоено значение "false". Атрибуты readAccessProperties и writeAccessProperties элемента profileService указывают, что свойство WebSettingsTestText доступно для чтения и записи.
В рабочем коде следует всегда обращаться к службе проверки подлинности с помощью протокола SSL (с использованием протокола HTTPS).
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true" requireSSL = "false"/>
<profileService enabled="true"
readAccessProperties="WebSettingsTestText"
writeAccessProperties="WebSettingsTestText" />
<roleService enabled="true"/>
</webServices>
</scripting>
</system.web.extensions>
- После открывающего тега <system.web> вставьте приведенный ниже код, который должен принадлежать элементу <system.web>.
Элемент profile предназначен для настройки одного веб-параметра WebSettingsTestText.
<profile enabled="true" >
<properties>
<add name="WebSettingsTestText" type="string"
readOnly="false" defaultValue="DefaultText"
serializeAs="String" allowAnonymous="false" />
</properties>
</profile>
В следующей процедуре показано использование средства администрирования веб-сайта ASP.NET для завершения настройки службы и заполнения файла локальной базы данных. Вы добавите двух пользователей: employee и manager. Каждому будет присвоена роль с аналогичным именем. Пароли пользователей: employee! и manager! соответственно.
2.2.Настройка членства и ролей
- В Обозревателе решений щелкните проект AppServices, а затем в меню Проект выберите пункт Настройка ASP.NET.
Откроется Средство администрирования веб-сайта ASP.NET.
- На вкладке Безопасность щелкните ссылку Использовать мастер настройки безопасности для пошаговой установки параметров безопасности.
Откроется Мастер настройки безопасности и отобразится Экран приветствия.
- Нажмите кнопку Далее.
Отобразится страница Выбор способа доступа.
- Выберите Через Интернет. Вместо проверки подлинности Windows в службе будет использоваться проверка подлинности с помощью форм.
- Нажмите кнопку Далее дважды.
Отобразится страница Определение ролей.
- Установите флажок Включить роли для этого веб-сайта.
- Нажмите кнопку Далее. Отобразится форма Создание новой роли.
- В текстовом поле Имя новой роли введите manager и нажмите кнопку Добавить роль.
Отобразится таблица Существующие роли с указанным значением.
- В текстовом поле Имя новой роли замените manager на employee и нажмите кнопку Добавить роль.
В таблице Существующие роли появится новое значение.
- Нажмите кнопку Далее.
Отобразится страница Добавление новых пользователей.
- В форме Создание пользователя укажите следующие значения.
Имя пользователя |
manager |
Пароль |
manager! |
Подтверждение пароля |
manager! |
Электронная почта |
manager@contoso.com |
Контрольный вопрос |
manager |
Ответ на контрольный вопрос |
manager |
- Нажмите кнопку Создать пользователя.
Отобразится сообщение об успешном создании пользователя.
Поля формы Электронная почта, Контрольный вопрос и Ответ на контрольный вопрос обязательны для заполнения, но не используются в этом примере.
- Нажмите кнопку Продолжить.
Отобразится форма Создание пользователя.
- В форме Создание пользователя укажите следующие значения.
Имя пользователя |
employee |
Пароль |
employee! |
Подтверждение пароля |
employee! |
Электронная почта |
employee@contoso.com |
Контрольный вопрос |
Employee |
Ответ на контрольный вопрос |
employee |
- Нажмите кнопку Создать пользователя.
Отобразится сообщение об успешном создании пользователя.
- Нажмите кнопку Готово.
Снова откроется Средство администрирования веб-сайта.
- Выберите пункт Управление пользователями.
Отобразится список пользователей.
- Щелкните Изменить роли в строке employee и выберите роль employee.
- Щелкните Изменить роли в строке manager и выберите роль manager.
- Закройте окно браузера, в котором открыто Средство администрирования веб-сайта.
- Если появится окно сообщения с запросом на перезагрузку измененного файла Web.config, нажмите кнопку Да[6].
Это завершит настройку веб-службы. Вы можете нажать клавишу F5, чтобы запустить клиентское приложение. При этом будет автоматически запущен ASP.NET Development Server. Сервер продолжит работать после выхода из приложения, но при его перезапуске будет также перезапущен. Это позволит обнаружить все изменения, внесенные в файл Web.config.
Чтобы вручную остановить сервер, щелкните правой кнопкой мыши значок ASP.NET Development Server в области уведомлений на панели задач и выберите команду Остановить. Иногда это может потребоваться для выполнения чистого перезапуска.
2.3. Добавление проверки подлинности с помощью форм
В следующей процедуре вы добавите в главную форму код для проверки подлинности пользователей и блокирования доступа в случае ввода недействительных учетных данных. Для тестирования службы будут использоваться жестко заданные имя пользователя и пароль.
Проверка пользователей в коде приложения
- В окне Обозреватель решений для проекта ClientAppServicesDemo добавьте ссылку на сборку System.Web.
- Щелкните файл Form1 и в главном меню Visual Studio выберите пункты Вид | Код.
- В редакторе кода добавьте следующие операторы в начале файла Form1.
C#
VB
using System.Net;
using System.Threading;
using System.Web.ClientServices;
using System.Web.ClientServices.Providers;
using System.Web.Security;
- В окне Обозреватель решений дважды щелкните файл Form1, чтобы отобразить конструктор.
- В конструкторе дважды щелкните поверхность формы, чтобы создать обработчик событий Form.Load с названием Form1_Load.
Откроется редактор кода, курсор окажется в области метода Form1_Load.
- Добавьте следующий код в метод Form1_Load.
Благодаря этому коду пользователи, не прошедшие проверку подлинности, не смогут получить доступ к приложению — приложение будет закрыто. Кроме того, можно разрешить пользователям доступ к форме в случае неудачной проверки подлинности, но блокировать при этом определенные функции. Как правило, имя пользователя и пароль не задаются жестко, как в данном примере, однако это может быть полезно в целях тестирования. В следующем разделе вы замените этот код более надежным, позволяющим отображать диалоговое окно входа и предусматривающим обработку исключений.
Обратите внимание, что метод Membership.ValidateUser (static) включен в .NET Framework 2.0. Функции данного метода делегируются указанному поставщику проверки подлинности. В случае удачной проверки подлинности возвращается значение true. В вашем приложении не требуется прямых ссылок на поставщика проверки подлинности клиента.
C#
VB
if (!Membership.ValidateUser("manager", "manager!"))
{
MessageBox.Show("Unable to authenticate.", "Not logged in",
MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
Теперь вы можете запустить приложение с помощью клавиши F5. Поскольку вы указали правильные имя пользователя и пароль, отобразится форма.
Чтобы отобразить сообщение об ошибке, измените параметры ValidateUser. Например, замените значение второго параметра ("manager!") неправильным паролем (например, "MANAGER").
Добавление формы входа в качестве поставщика учетных данных
Вы можете получать учетные данные пользователей с помощью кода своего приложения и передавать их методу ValidateUser. Однако на случай, если вы решите изменить код получения учетных данных, бывает полезно держать его отдельно от остального кода приложения.
В следующей процедуре описывается настройка приложения на использование поставщика учетных данных. При вызове метода ValidateUser обоим параметрам будет передаваться значение Empty. Пустые строки отдают методу ValidateUser команду вызова метода GetCredentials указанного поставщика учетных данных.
Настройка приложения на использование поставщика учетных данных
- В окне Обозреватель решений щелкните проект ClientAppServicesDemo, а затем в меню Проект выберите пункт Свойства ClientAppServicesDemo.
Откроется конструктор проектов.
- На вкладке Службы установите следующее значение для параметра Необязательно: поставщик учетных данных. Это значение определяет имя типа с указанием сборки.
- ClientAppServicesDemo.Login, ClientAppServicesDemo
- В файле с текстом программы Form1 замените код метода Form1_Load представленным ниже.
Этот код отображает приветственное сообщение, а затем вызывает метод ValidateUsingCredentialsProvider, который вы добавите в следующем шаге. Если пользователь не проходит проверку подлинности, метод ValidateUsingCredentialsProviderвозвращает значение false, а также выполняется возврат метода Form1_Load. Это позволяет предотвратить выполнение любого дополнительного кода до выхода из приложения. Приветственное сообщение позволяет понять, когда выполняется перезапуск приложения. Добавление кода перезапуска приложения описывается ниже в разделе "Реализация выхода"[7].
C#
VB
MessageBox.Show("Welcome to the Client Application Services Demo.",
"Welcome!");
if (!ValidateUsingCredentialsProvider()) return;
- Добавьте приведенный ниже метод после метода Form1_Load.
Этот метод передает пустые строки методу Membership.ValidateUser (static), благодаря которому отображается диалоговое окно входа. Если служба проверки подлинности недоступна, метод ValidateUser вызывает исключение WebException. В этом случае метод ValidateUsingCredentialsProvider отобразит предупреждающее сообщение и предложение повторить попытку в автономном режиме. Для этого требуется включить функцию Локально сохранять хэш пароля для обеспечения входа вне сети, как описано в разделе Практическое руководство. Настройка служб клиентских приложений. Для новых проектов эта функция включена по умолчанию.
Если пользователь не прошел проверку подлинности, метод ValidateUsingCredentialsProvider отображает сообщение об ошибке и завершает работу приложения. Этот метод также возвращает результат попытки проверки подлинности.
C#
VB
private bool ValidateUsingCredentialsProvider()
{
bool isAuthorized = false;
try
{
// Call ValidateUser with empty strings in order to display the
// login dialog box configured as a credentials provider.
isAuthorized = Membership.ValidateUser(
String.Empty, String.Empty);
}
catch (System.Net.WebException)
{
if (DialogResult.OK == MessageBox.Show(
"Unable to access the authentication service." +
Environment.NewLine + "Attempt login in offline mode?",
"Warning", MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning))
{
ConnectivityStatus.IsOffline = true;
isAuthorized = Membership.ValidateUser(
String.Empty, String.Empty);
}
}
if (!isAuthorized)
{
MessageBox.Show("Unable to authenticate.", "Not logged in",
MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
return isAuthorized;
}
Создание формы входа
Поставщик учетных данных — это класс, реализующий интерфейс IClientFormsAuthenticationCredentialsProvider. Этот интерфейс содержит один метод с именем GetCredentials, возвращающий объект ClientFormsAuthenticationCredentials. В следующей процедуре описывается создание диалогового окна входа. Для отображения окна и возвращения указанных пользователем учетных данных используется методGetCredentials.
Для Visual Basic и C# представлены отдельные инструкции, так как в Visual Basic доступен шаблон Форма входа. Это позволяет сократить время и затраты на кодирование.
Создание диалогового окна входа как поставщика учетных данных в Visual Basic
- На панели Обозреватель решений щелкните проект ClientAppServicesDemo, а затем в меню Проект выберите пункт Добавить новый элемент.
- В диалоговом окне Добавление нового элемента выберите шаблон Форма входа, измените Имя на Login.vb и нажмите кнопку Добавить.
В конструкторе Windows Forms отобразится диалоговое окно входа.
- В конструкторе нажмите кнопку OK, а затем в окне Свойства выберите для параметра DialogResult значение OK.
- В конструкторе добавьте в форму элемент управления CheckBox под текстовым полем Пароль.
- В окне Свойства укажите для параметра (Name) значение rememberMeCheckBox, а для параметра Text — &Remember me.
- В главном меню Visual Studio выберите пункты Вид | Код.
- В редакторе кода добавьте в начало файла следующий код.
VB
Imports System.Web.ClientServices.Providers
- Измените сигнатуру класса, чтобы обеспечить реализацию интерфейса IClientFormsAuthenticationCredentialsProvider.
VB
Public Class Login
Implements IClientFormsAuthenticationCredentialsProvider
- Установите курсор после кода интерфейса IClientformsAuthenticationCredentialsProvider и нажмите клавишу ВВОД, чтобы создать метод GetCredentials.
- Найдите код, с помощью которого реализуется метод GetCredentials, и замените его на приведенный ниже.