return;
}
Класс RefreshAction содержит логику, определяющую, является ли текущий запрос обновлением страницы. Если он распознаётся как обновление, то в коллекции Items объекта HttpContext появляется новая запись IsPageRefreshed, которой присваивается значение true.
public static void Check (HttpContext ctx)
{
EnsureRefreshTicket(ctx);
// Получение предыдущего номера из объекта Session
int lastTicket = GetLastRefreshTicket(ctx);
…………………………………………………….
int thisTicket = GetCurrentRefreshTicket(ctx);
// Сравнение номеров
if (thisTicket > lastTicket || (thisTicket==lastTicket && thisTicket==0))
UpdateLastRefreshTicket (ctx, thisTicket);
………………………………………….
else
ctx. Items[PageRefreshEntry] = true;
Класс RefreshPage содержит свойство IsPageRefresh:
public bool IsPageRefresh
get {
object o = HttpContext. Current. Items [RefreshAction. PageRefreshEntry];
if (o == null)
return false;
return (bool) o;
Наследую класс web-страниц от класса RefreshPage можно использовать это свойство и определять обновление страницы. Таким образом, можно отслеживать обновление web-страницы при удалении товаров из покупательской корзины. Соответственно, если обнаружено обновление страницы, то товар не удаляется. Код обработчика представлен ниже:
protected void UpdateButton_Click (object sender, EventArgs e)
if (! IsPageRefresh && IsValid)
int numDeleted = 0;
…………………………………………………………………
if (((CheckBox) (row. FindControl ("DeleteCheck"))).Checked)
Profile. Cart. RemoveAt (row. RowIndex - numDeleted);
……………….
continue;
string regular = "[^0-9]";
string text = ((TextBox) (row. FindControl ("TextBoxQuantity"))).Text;
MatchCollection collect = Regex. Matches (text, regular);
if ((collect. Count!= 0) || (text. Length == 0))
Profile. Cart [row. RowIndex - numDeleted].Quantity = Convert. ToInt32 (((TextBox) (row. FindControl ("TextBoxQuantity"))).Text);
Profile. Save();
Session ["IsUpdateCart"] = true;
Диаграмма классов, используемых для отслеживания обновления web-страниц, приведена на рисунке 10.
Рис. 10 "Диаграмма классов, используемых для отслеживания обновления web-страниц"
4.5 Аутентификация и авторизация пользователей
4.5.1 Описание и настройка интерфейса Membership API
Как уже было сказано в пункте 4.1.1, разработанное web-приложение содержит страницы, доступ к которым должен быть ограничен со стороны не аутентифицированных пользователей, либо аутентифицированных, но не обладающих необходимыми правами доступа.
Аутентификация - это процесс определения личности пользователя.
Авторизация - это процесс определения прав и ограничений, назначенных аутентифицированному пользователю. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. В данном пункте рассмотрен интерфейс Membership API и его применение при разработке дипломного проекта. Интерфейс Roles API описан в пункте 4.5.3.
Интерфейс Membership API предоставляет полный набор функций для хранения информации о пользователях и управления ею.
При разработке дипломного проекта использовались следующие классы, предоставляемые интерфейсом Membership API:
· Membership - предоставляет методы для управления пользователями;
· MembershipUser - предоставляет отдельного пользователя, записанного в хранилище данных. Этот объект содержит всю информацию о данном пользователе и возвращается несколькими методами класса Membership;
Также Membership API содержит набор элементов управления безопасность, предназначенных для создания web-страниц регистрации, входа в систему, смены и восстановления пароля. Все эти элементы полностью настраиваемы и расширяемы. По умолчанию каждый элемент работает на основе Membership API и аутентификации форм, но при необходимости любые события можно переопределить. Аутентификация форм рассмотрена в пункте 4.5.2.
Для того чтобы использовать интерфейс Membership API необходимо создать хранилище данных и настроить его на работу с ним. Для хранения удостоверений пользователей в базе данных web-приложения с помощью программы aspnet_regsql.exe, поставляющейся вместе с.NET Framework 2.0, были созданы специальные таблицы: aspnet_Membership, aspnet_Users и aspnet_Applications, а также хранимые процедуры для доступа к ним. Далее необходимо настроить поставщик Membership API, для обеспечения доступа к хранилищу данных. Это делается с помощью файла конфигурации web-приложения web.config:
<membership defaultProvider= "MyMembershipProvider">
<providers>
<add name= "MyMembershipProvider"
type= "System. Web. Security. SqlMembershipProvider"
applicationName="/MusicInternetShop"
enablePasswordRetrieval= "true"
enablePasswordReset= "true"
maxInvalidPasswordAttempts= "5"
………………………………….
requiresUniqueEmail= "true"
passwordFormat= "Clear"
minRequiredPasswordLength= "7"/>
</providers>
</membership>
В элементе <membership><providers> определены следующие параметры настройки поставщика Membership:
· name - имя поставщика;
· applicationName - имя приложения, для которого поставщик управляет пользователями;
· type - тип поставщика. Выбирается в зависимости от используемого хранилища данных;
· connectionStringName - имя строки подключения к хранилищу данных. В данном случае используется строка поключения, описанная в элементе <connectionStrings>
· enablePasswordRetrieval - когда установлено в true, позволяет извлекать пароль из объекта MembershipUser;
· enablePasswordReset - когда установлено в true, включает функциональность для переустановки пользовательских паролей;
· maxInvalidPasswordAttempts - задаёт максимальное количество неудачных попыток входа в систему, прежде чем пользователь будет заблокирован;
· requiresQuestionAndAnswer - когда установлено в true, включает функциональность для восстановления забытого пароля используя контрольный вопрос и ответ, заданные при регистрации пользователя. Восстановленный пароль отправляется на почтовый ящик пользователя, указанный при регистрации;
· requiresUniqueEmail - указывает, должны ли адреса электронной почты быть уникальными для каждого пользователя webприложения;
· passwordFormat
После этого в web-приложении могут использоваться функции, предоставляемые Membership API. В следующем пункте подробно описана система аутентификации форм, основанная на интерфейсе Membership API, которая применяется в разработанном web-приложении.
4.5.2 Аутентификация форм
После того как соответствующим образом настроен интерфейс Membership API, можно реализовывать механизмы аутентификации и авторизации пользователей. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. ASP.NET обрабатывает cookie-набор и устанавливает контекст безопасности каждого запроса.
Аутентификация форм основана на мандатах. Это означает, что когда пользователь регистрируется, он получает так называемый мандат с базовой информацией о себе. Информация сохраняется в зашифрованном cookie-наборе, который прикрепляется к ответу, так что автоматически подтверждается при каждом последующем запросе.
Когда пользователь запрашивает web-страницу, недоступную анонимным пользователям, исполняющая система ASP.NET проверяет, доступен ли аутентифицирующий мандат формы. Если нет, то выполняется автоматическая переадресация на страницу входа в систему. На этой странице пользователь может ввести своё имя и пароль или перейти на страницу регистрации. Если пользователь успешно прошёл проверку, то исполняющая система ASP.NET автоматически устанавливает аутентифицирующий cookie-набор и переадресует пользователя на запрошенную страницу.
Как уже было сказано выше, аутентификация форм работает совместно с интерфейсом Membership API, это означает, что для создания страниц входа в систему и регистрации, можно использовать элементы управления безопасностью, такие как:
· Login - отображает текстовые поля имени пользователя и пароля, а также кнопку "Вход". Автоматически проверяет пользователя с помощью поставщика Membership;
· CreateUserWizard - в данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17