Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="Имя не может быть пустым."
ToolTip="Имя не может быть пустым." ValidationGroup="Login1">*</asp:RequiredFieldValidator>
</td>
</tr>
Здесь сначала создается метка <asp:Label ...>, затем текстовое поле <asp:TextBox ...>, а затем специальный объект для проверки непустоты этого поля: <asp:RequiredFieldValidator ...>. Этот объект проявит себя, если пользователь не заполнит поле имени и нажмет кнопку Log In. Кстати, эта проверка выполняется на клиентской стороне – сервер генерирует для этого специальные клиентские обработчики.
Обработку ошибок объект-логин берет на себя. А вот в случае успешной авторизации обработку придется написать самим. Если сотрудник успешно авторизован, то его следует переадресовать на главную страницу АРМ, соответствующего его роли. Для этого в файле login. aspx. cs зададим обработку для события загрузки страницы:
protected void Page_Load(object sender, EventArgs e)
{
if (HttpContext. Current. User. Identity. IsAuthenticated)
{
if(HttpContext. Current. User. IsInRole("librarian"))
Response. Redirect("~/librarian/Default. aspx");
else if
(HttpContext. Current. User. IsInRole("warehouse"))
Response. Redirect("~/warehouse/Default. aspx");
else if
(HttpContext. Current. User. IsInRole("collector"))
Response. Redirect("~/collector/Default. aspx");
}
}
Здесь сначала выполняется проверка, аутентифицирован ли пользователь. Если да, то проверяем, относится ли пользователь к одной из трех наших ролей. В случае положительного ответа выполняем перенаправление с помощью объекта Response – это специальный объект, который инкапсулирует информацию об ответе сервера браузеру.
Для выхода из авторизованного режима создадим очень простой сценарий. Он не имеет никаких визуальных элементов и содержит только единственный обработчик загрузки страницы:
protected void Page_Load(object sender, EventArgs e)
{
FormsAuthentication. SignOut();
Session. RemoveAll();
Session. Clear();
Response. Redirect("default. aspx");
}
В этом обработчике мы выходим из авторизованного режима и выполняем переадресацию на главную страницу сайта.
Примечание: для неавторизованных пользователей любая попытка попасть на защищенную страницу приводит к автоматической переадресации на страницу login. aspx. Поменяем это назначение на страницу default.aspx. Для этого в корневом файле web.config найдем строку
<authentication mode="Forms"/>
и заменим ее на:
<authentication mode="Forms">
<forms loginUrl="default. aspx"/>
</authentication>
Личный кабинет сотрудника
Итак, авторизация нами успешно обработана. Создадим заодно страничку для личного кабинета сотрудников, где они смогут изменить свой пароль, а также заполнить дополнительные сведения о себе: ФИО, адрес, телефон и т. п.

Для хранения дополнительных данных о сотруднике используем такое понятие, как Profile. В файле web.config корневого каталога внутри секции
<system. web> . . . </system. web>
создадим специальную секцию
<!-- добавляем поля пользователю -->
<profile enabled="true" >
<properties>
<group name="PersonalInfo">
<add name="UserFIO" type="string" />
<add name="UserAddr" type="string" />
<add name="UserTel" type="string" />
<add name="UserState" type="string" />
</group>
</properties>
</profile>
Теперь для авторизованного пользователя эти свойства будут доступны (и для чтения, и для записи) через объект Profile, а обращаться к ним можно будет так: Profile.PersonalInfo.UserFIO и т. п.
Создадим файл cabinet.aspx, разместим в форме метки (label), текстовые поля (textbox) и кнопку (button) из стандартной секции панели Toolbox. Они выглядят так:
<asp:Label ID="Label1" runat="server" Text="ФИО"></asp:Label> <asp:TextBox ID="txtFIO" runat="server"></asp:TextBox>
. . .
<asp:Button ID="Button1" runat="server" Text="Сохранить" />
Рядом c полем txtFIO разместим элемент для проверки непустоты поля: элемент управления RequiredFieldValidator из вкладки Tools секции Validation. Установим у него значение свойства ControlToValidate=txtFIO и изменим свойство Text=Поле ФИО не может быть пустым! В тексте сценария он будет выглядеть так:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="txtFIO">
Поле ФИО не может быть пустым!
</asp:RequiredFieldValidator>
Все эти элементы управления являются так называемыми «серверными элементами управления», т. е., когда форма вызывает сама себя, мы можем для элементов управления задавать серверные функции-обработчики. Назначим на кнопку серверный обработчик: запишем OnClick="Update" в коде кнопки на aspx-странице либо назначим свойство Click=Update в окне Properties. В файл cabinet. aspx. cs поместим код этого обработчика, который записывает значения из текстовых полей в профиль пользователя:
protected void Update(object s, EventArgs e)
{
Profile. PersonalInfo. UserFIO = txtFIO. Text;
Profile. PersonalInfo. UserAddr = txtAddr. Text;
Profile. PersonalInfo. UserTel = txtTel. Text;
Profile. PersonalInfo. UserState = txtState. Text;
}
Для чтения данных из профиля пользователя предусмотрим обработчик загрузки страницы.
protected void Page_Load(object sender, EventArgs e)
{
if (!HttpContext. Current. User. Identity. IsAuthenticated)
Response. Redirect("login. aspx");
if (!IsPostBack)
{
txtFIO. Text = Profile. PersonalInfo. UserFIO;
txtAddr. Text = Profile. PersonalInfo. UserAddr;
txtTel. Text = Profile. PersonalInfo. UserTel;
txtState. Text = Profile. PersonalInfo. UserState;
}
}
Этот обработчик сначала проверяет, аутентифицирован ли пользователь, и если нет, то перенаправляет его на страницу авторизации. Если же пользователь уже авторизовался, проверяем, первый ли раз загружена страница. Если страница загружена первый раз, то мы переписываем данные из профиля пользователя в текстовые поля. Если же форма уже вызывала сама себя, то данные показаны на экране и нам не нужно читать их из профиля.
Для изменения пароля создадим страницу changepass.aspx.

Добавим на страницу элемент управления ChangePassword из секции Login. Для редактирования его составных частей в контекстном меню выберем строкy «Convert to template». Измените сообщения на русские, не забудьте также у объекта ChangePassword1 изменить свойство ChangePasswordFailureText на «Неверный пароль или новый пароль. Длина пароля должна быть не менее {0}. Число нецифросимвольных знаков: {1}.» и назначить страницу перехода после успешного изменения пароля SuccessPageURL, например: сabinet.aspx.
Регистрация читателей
Информация о читателях у нас хранится в отдельной таблице, поэтому для регистрации и авторизации читателей придется создавать отдельный интерфейс. Создадим сценарий RegReader.aspx в каталоге библиотекаря Librarian, поскольку именно библиотекари занимаются регистрацией новых читателей.

Нам нужно получить доступ к таблице readers. Технология доступа к базам данных в .NET называется ADO.NET. Эта технология содержит много разнообразных классов для доступа и представления информации. Мы будем использовать только некоторые из них. Заинтересованный читатель может обратиться, например, к книге [5], полностью посвященной этой технологии.
Поместим на страницу элемент управления SQLDataSource (источник данных) из группы Data с вкладки Tools. Этот элемент управления не имеет визуального представления в браузере пользователя, поэтому его можно помещать в любое место нашей страницы.
Теперь источнику данных нужно назначить свойство ConnectionString, в качестве значения свойства можно выбрать имя файла базы данных ASPNETDB. MDF. При этом автоматически устанавливается свойство ProviderName = System. Data. SqlClient.
Разместим на нашей странице метки (label), текстовые поля (textbox) и кнопку (button) из стандартной секции панели Toolbox. (Если текстовые поля и прочие элементы не хотят переименовываться в окне свойств, можете переименовать их прямо в aspx-тексте сценария.)
Для каждого текстового поля зададим свой валидатор RequiredFieldValidator (как мы это делали в личном кабинете сотрудника).
Для поля почтового адреса зададим валидатор, проверяющий регулярные выражения – RegularExpressionValidator. У него нужно назначить свойство ControlToValidate=имя_текстового_поля_для_e-mail и свойство ValidationExpression (выбрать из списка «Internet e-mail address»). Напомним, что эти проверки будет выполнять браузер без отправки данных на сервер.
Информация о нашем пользователе содержит такое поле, как дата рождения. Поскольку для ввода даты мы используем текстовое поле, следует организовать проверку корректности введенной даты. Для этого зададим пользовательский валидатор CustomValidate, назначим ему свойство ControlToValidate=имя_текстового_поля_для_даты_ рождения и зададим обработчик ServerValidate, например, с именем DateValidate. Текст обработчика следует помещать в файл RegReader. aspx. cs:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |


