c# web. Занятие 07

53
Темы лекции: ASP.NET. Web Forms. Часть 3. Практическое задание: ASP.NET. Web Forms. Тренер: Игорь Шкулипа, к.т.н. Разработка Веб-приложений на платформе Microsoft .NET Framework. Занятие 7

Upload: igor-shkulipa

Post on 09-Jan-2017

143 views

Category:

Education


5 download

TRANSCRIPT

Page 1: C# Web. Занятие 07

Темы лекции: ASP.NET. Web Forms. Часть 3.

Практическое задание: ASP.NET. Web Forms.

Тренер: Игорь Шкулипа, к.т.н.

Разработка Веб-приложений на платформе Microsoft .NET Framework.

Занятие 7

Page 2: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 2

ASP.NET Web Parts С помощью ASP.NET Web Parts Framework легко создавать собственные

пользовательские веб-страницы. Эта платформа состоит из элементов управленияи компонентов, которые выполняют:

• Определение настраиваемых разделов.Платформа позволяет структурировать страницу и указывать настраиваемыеразделы страницы через так называемые зоны веб-частей.

• Предоставление компонентов для выбора элементов.В дополнение к настраиваемым разделам платформа поставляется соспециальными готовыми разделами, позволяющими редактировать свойстваинформационных элементов, отображаемых на странице, или добавлять и удалятьэлементы информации на странице.

• Настройка веб-страницы.Как только пользователь зарегистрировался в приложении, он может настроитьвеб-страницу, перетаскивая отображенные элементы по разным настраиваемымразделам. Пользователь может даже закрыть или свернуть содержимое, чтобыосвободить больше места для другого, более интересного содержимого.

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

Страница, использующая эту платформу, называется страницей веб-частей, аинформационные элементы, которые могут отображаться на странице - веб-частями.

Page 3: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 3

Создание веб-частей

• Создание страницы.

• Добавление элемента управления WebPartManager.

• Добавление элементов управления WebPartZone.Каждый раздел на странице, который должен отображать специальныевеб-части, инкапсулируется в экземпляр элемента управленияWebPartZone.

• Добавление веб-частей.Можно применять простые пользовательские элементы управления,готовые пользовательские элементы управления, специальныесерверные элементы управления либо элементы управления,унаследованные непосредственно от класса WebPart.

• Добавление предварительно построенных зон и частей.Если пользователь желает добавлять или удалять веб-части во времявыполнения либо редактировать свойства веб-частей, к веб-страницепонадобится добавить предварительно построенные готовые зоны,такие как CatalogZone, которая дает возможность пользователюдобавлять веб-части на страницу.

Page 4: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 4

Элементы управления WebPartManager и WebPartZones

Элемент WebPartManager работает со всеми добавленными н веб-странице зонами и знает обо всех доступных веб-частях страницы. Онуправляет персонализацией и обеспечивает настройку веб-страницыдля текущего зарегистрированного пользователя.

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

После помещения на страницу элемента WebPartManager можнодобавлять настраиваемые разделы. Такие разделы называются зонамивеб-частей (WebPartZones), и каждая зона может содержать стольковеб-частей, сколько необходимо пользователю.

Page 5: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 5

Пример. Пользовательский элемент. WebPart1.ascx

<%@ Control Language="C#" AutoEventWireup="true"

CodeBehind="WebPart1.ascx.cs"

Inherits="WFApplication1.WebPart11" %>

<body>

<div>

Hello, Web Parts!!!

</div>

</body>

Page 6: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 6

Пример. WebParts.aspx

<%@ Page Title="" Language="C#"

MasterPageFile="~/Site.Master"

AutoEventWireup="true" CodeBehind="WebParts.aspx.cs«

Inherits="WFApplication1.WebParts" %>

<%@ Register Src="~/WebPart1.ascx" TagName="WebPart1" TagPrefix="control" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">

</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">

<asp:WebPartManager ID="WebPartManager1" runat="server" />

<table style="width: 100%">

<tr style="vertical-align: top">

<td style="width: 20%"></td>

<td style="width: 60%">

<asp:WebPartZone ID="WebPartZone1" runat="server">

<ZoneTemplate>

<control:WebPart1 ID="WebPart1ID" runat="server" />

</ZoneTemplate>

</asp:WebPartZone>

</td>

<td style="width: 20%"></td>

</tr>

</table>

</asp:Content>

Page 7: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 7

Результат

Page 8: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 8

Уровни безопасности

В основном, для большей части веб-приложений основные задачи дляреализации защиты, всегда одни и те же:

• Аутентификация• Авторизация• Конфиденциальность• Целостность

ASP.NET включает базовую инфраструктуру для выполненияаутентификации и авторизации. Библиотека базовых классов .NETFramework включает ряд классов в пространстве именSystem.Security, которые предназначены для шифрования и подписиданных.

Page 9: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 9

АутентификацияАутентификация - процесс определения идентичности пользователя и

обеспечения гарантий этой идентичности. Процесс аутентификациианалогичен регистрации пользователей. Как только идентичностьустановлена, маркер подтверждает ее, так что куда бы вы ни пошли впределах конкретной области, ваша личность будет известной.

В приложениях ASP.NET аутентификация реализуется одной из следующихвозможных аутентифицирующих систем:

• аутентификация Windows• аутентификация с помощью форм• специальный процесс аутентификации

Идентичность пользователя отслеживается разными способами, в зависимостиот типа аутентификации.

Например, операционная система Windows использует 96-битное число,называемое SID (security identifier - идентификатор безопасности) дляидентификации каждого входящего пользователя.

При аутентификации с помощью форм ASP.NET пользователю выдаетсяаутентифицирующий мандат формы, представляющий собой комбинациюзначений, которые шифруются и помещаются в cookie-набор.

Page 10: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 10

Авторизация

Авторизация - это процесс определения прав и ограничений,назначенных аутентифицированному пользователю. Авторизация - этопроцесс выдачи допуска на определенные ресурсы, например, наглавную страницу.

В веб-приложениях разные типы авторизации происходят на разныхуровнях. Например, на самом верхнем уровне код может проверятьидентичность пользователя и решать, можно ли продолжать даннуюоперацию. На нижнем уровне можно настроить ASP.NET так, чтобызапрещать доступ к определенным веб-страницам или каталогам дляопределенных пользователей или ролей. На еще более низком уровне,когда код выполняет различные задачи - такие как подключение кбазе данных, открытие файла записи в журнал событий и т.п. -операционная система Windows проверяет права учетной записиWindows, от имени которой выполняется данный код.

Page 11: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 11

Конфиденциальность и целостность

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

Целостность - это обеспечение невозможности изменения данных никемво время передачи по сети или сохранения в хранилище. И то, идругое основано на шифровании.

Шифрование - процесс кодирования данных, делающий невозможным ихчтение другими пользователями. Шифрование в ASP.NET являетсясредством, полностью отделенным от аутентификации, авторизации изаимствования прав. Его можно применять в комбинации с этимисредствами либо самостоятельно.

Page 12: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 12

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

ASP.NET. Но когда пользователь запрашивает веб-страницу, анонимный доступ ккоторой закрыт, выполняется несколько шагов:

• Запрос отправляется веб-серверу.

• Пользователь предоставляет свое «удостоверение», которое затемверифицируется - либо вашим приложением (в случае аутентификации спомощью форм), либо автоматически средствами IIS (в случае аутентификацииWindows).

• Если удостоверение пользователя подтверждается, ему предоставляется доступк веб-странице. Если же оно оценивается как нелегитимное, ему предлагаетсяповторить попытку регистрации, либо же выполняется переадресация настраницу с сообщением о закрытии доступа.

Page 13: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 13

Получение доступа к защищенной странице

Когда пользователь запрашивает защищенную веб-страницу, которая открытатолько для определенных пользователей или ролей, процесс аналогичен, нодобавляется дополнительный шаг:

• Предыдущие пункты

• Удостоверение или роли аутентифицированного пользователя сравниваются сосписком разрешенных пользователей и ролей. Если пользователь присутствуетв списке, ему открывается доступ к ресурсу, в противном случае доступ будетзакрыт.

• Пользователи, которым отказано в доступе, либо приглашаются на повторнуюрегистрацию, либо перенаправляются на веб-страницу с сообщением о закрытиидоступа.

Page 14: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 14

Аутентификация с помощью форм

Аутентификация с помощью форм - это система аутентификации общегоназначения, основанная на двух концепциях.

• Первая из них - страница входа (login page), которая можетудостоверить действительность пользователей (обычно сверяякомбинацию имени и пароля с базой данных или другим хранилищемданных).

• Вторая - это механизм предохранения и восстановленияконтекста безопасности при каждом запросе (обычно сприменением cookie-набора). Таким образом, пользователюпонадобится войти только один раз.

Аутентификация с помощью форм основана на билетах (такженазываемых маркерами). Это значит, что когда пользовательрегистрируется, он получает так называемый билет с базовойинформацией о себе. Информация сохраняется в зашифрованномcookie-наборе, который присоединяется к ответу, так чтоавтоматически отправляется в каждом последующем запросе.

Аутентификация с помощью форм инкапсулирована в виде классаFormsAuthentication.

Page 15: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 15

Аутентификация с помощью форм

Page 16: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 16

Преимущества АсПФ

• Контроль над кодом аутентификацииПоскольку аутентификация с помощью форм реализована полностью внутриASP.NET, вы получаете полный контроль над выполнением аутентификации.Вам не нужно полагаться ни на какую внешнюю систему, как это имеет местопри аутентификации Windows.

• Контроль над внешним видом формы входаВы имеете ту же степень контроля над внешним видом аутентификации спомощью форм, что и над ее функциональностью.

• Работа с любым браузеромАутентификация с помощью форм использует в качестве пользовательскогоинтерфейса стандартный HTML, так что все браузеры могут его обработать.

• Хранение информации о пользователяхАутентификация с помощью форм по умолчанию хранит пользователей в файлеweb.config, но эту информацию можно хранить где угодно. Для этогопонадобится только написать код, который обращается к хранилищу данных иизвлекает информацию о пользователях.

• Гибкость в хранении информации о пользователях также означает возможностьконтроля над созданием и администрированием пользовательскихучетных записей, а также присоединения дополнительной информации к этимучетным записям, такой как персональные предпочтения по настройке внешнеговида веб-сайта

Page 17: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 17

Недостатки АсПФ

• Вы должны самостоятельно создавать пользовательский интерфейсдля регистрации пользователей. Можно либо целиком создатьсобственную страницу входа, либо использовать элементы управлениябезопасностью ASP.NET.

• Вы должны самостоятельно поддерживать каталог удостоверенийпользователей.

• Вы должны самостоятельно предпринимать дополнительныепредосторожности против вмешательства в сетевой трафик.

Page 18: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 18

Классы платформы аутентификации с помощью форм

Имя класса Описание

FormsAuthentication

Основной класс для взаимодействия с инфраструктурой аутентификации с помощью форм. Он предоставляет базовую информацию о конфигурации и позволяет создавать билет, устанавливать cookie-наборы и перенаправлять со страницы входа на исходную запрошенную страницу в случае успешной проверки удостоверения пользователя

FormsAuthenticationEventArgs

FormsAuthenticationEventArgs инициирует событие Authenticate, которое можно перехватить. Соглашения о передаваемых аргументах события инкапсулируются в экземпляре этого класса. Содержит базовую информацию об аутентифицированном пользователе

FormsAuthenticationTicket

Этот класс предоставляет информацию о пользователе, которая будет зашифрована и помещена в cookie-набор аутентификации

FormsIdentity

Этот класс реализует интерфейс IIdentity и является специфичным для аутентификации с помощью форм. Ключевым дополнением класса FormsIdentity, кроме членов, необходимых для реализации интерфейса IIdentity, является свойство Ticket, представляющее билет аутентификации. Это позволяет сохранять и извлекать дополнительную информацию из билета

FormsAuthenticationModule

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

Page 19: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 19

Пример. Login.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master"

AutoEventWireup="true" CodeBehind="Login.aspx.cs"

Inherits="WFApplication1.Login" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent"

runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent"

runat="server">

</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent«

runat="server">

<asp:TextBox ID="LoginTB" runat="server" AutoPostBack="true"/>

<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>

<asp:Button ID="LoginBTN" runat="server" Text="Login"

OnClick="LoginBTN_Click"/>

</asp:Content>

Page 20: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 20

Пример. Login.aspx.cs

public partial class Login : System.Web.UI.Page

{

protected void LoginBTN_Click(object sender, EventArgs e)

{

//Перед этим стоило бы сделать проверку авторизации...

FormsAuthentication.RedirectFromLoginPage(LoginTB.Text, true);

}

}

Page 21: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 21

Пример. Web.config

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH">

</forms>

</authentication>

<authorization>

<deny users="?" />

</authorization>

Page 22: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 22

Результат

Page 23: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 23

Результат

Page 24: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 24

Membership API

Платформа Membership API предоставляет полный набор готовых функций управленияпользователями:

• Возможность создавать и удалять пользователей - как программно, так и с помощьювеб-утилиты конфигурирования ASP.NET.

• Возможность переустановки паролей с автоматической отправкой пользователямновых паролей по электронной почте, если известен адрес электронной почты данногопользователя.

• Возможность автоматической генерации паролей для пользователей, еслипользователи создаются автоматически в фоновом режиме.

• Возможность нахождения пользователей в лежащем в основе хранилище данных,а также извлечения списков пользователей и подробной информации о каждом их них.

• Набор предварительно разработанных элементов управления для создания страницвхода и регистрации, а также для отображения состояния входа в различныхпредставлениях для аутентифицированных и не аутентифицированных пользователей.

• Уровень абстракции, который обеспечивает независимость приложений отконкретного лежащего в основе хранилища данных через классы поставщиковчленства. Любая функциональность, перечисленная выше, работает совершеннонезависимо от конкретного используемого хранилища данных, и одни хранилища данныхможно заменять на другие - совершенно без необходимости в какой-либо модификацииприложений. По умолчанию Membership API полагается на базу данных SQL Server Expressдля хранения информации о пользователях и ролях.

Page 25: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 25

Архитектура Membership API

Page 26: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 26

Классы Membership API

Компонент Описание

Membership

Класс Membership - центральная точка взаимодействия с Membership API. Он предоставляет ряд методов для управления пользователями, их проверки и переустановки паролей

MembershipCreateUserExceptionИсключение, генерируемое в случае возникновения ошибки при попытке создания пользователя классом Membership

MembershipUser

Представляет отдельного пользователя, записанного в хранилище данных Membership API. Этот объект содержит всю информацию о пользователе и возвращается несколькими методами класса Membership, например, GetUser()

MembershipUserCollection

Коллекция пользователей Membership. Например, метод GetUsers() класса Membership возвращает экземпляр этой коллекции

MembershipProvider

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

MembershipProviderCollectionКоллекций доступных поставщиков членства на машине для данного веб-приложения

SqlMembershipProviderРеализаций класса MembershipProvider, работающая с базами данных SQL Server

ActiveDirectoryMembershipProviderРеализация класса MembershipProvider, работающая со службой Active Directory

ActiveDirectoryMembershipUser

Класс, который наследует всю функциональность MembershipUser и добавляет некоторые специфичные для Active Directory свойства

Page 27: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 27

Элементы управления безопасностью

Платформа ASP.NET поставляется с множеством элементов управления, которые упрощаютпостроение, например, страниц входа, а также связанных с ними страниц

Элемент управления

Описание

Login

Составной элемент управления, который решает наиболее общую задачу в приложениях, основанных на аутентификации с помощью форм - отображает текстовые поля для ввода имени пользователя и пароля, а также кнопку входа.

LoginStatus

Простой элемент управления, проверяющий состояние аутентификации текущего сеанса. Если пользователь не аутентифицирован, он предлагает кнопку входа для перенаправления на сконфигурированную страницу входа. В противном случае отображает кнопку выхода, обеспечивая возможность выхода из приложения. Этот элемент инкапсулирует поведение, которое обычно должно быть доступно на всех страницах. Поэтому его очень удобно размещать на мастер-странице.

LoginView

Элемент управления, который дает возможность отображать разные наборы элементов управления для аутентифицированных и неаутентифицированных пользователей.

PasswordRecoveryПозволяет пользователю извлечь пароль, если при регистрации был указан его адрес электронной почты.

ChangePasswordСоставной элемент управления, который запрашивает старый пароль пользователя и позволяет ему ввести и подтвердить новый пароль.

CreateUserWizardВключает полный мастер, который проводит пользователя (или администратора) через процесс создания нового пользователя.

Page 28: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 28

Настройка Membership API

Прежде чем можно будет использовать интерфейс Membership API и элементыуправления безопасностью ASP.NET, потребуется выполнить несколькошагов:

• Сконфигурируйте аутентификацию с помощью форм в файле web.configобычным образом и запретите доступ анонимным пользователям.

• Настройте хранилище данных членства. Например, если используется SQLServer, то в базе данных SQL Server придется создать несколько таблиц ихранимых процедур.

• Сконфигурируйте в файле web.config строку подключения к базе данных ипоставщика членства, который должен использоваться.

• Создайте пользователей в хранилище данных членства с помощью веб-утилиты конфигурирования ASP.NET, либо воспользуйтесь собственнойстраницей администрирования, которая может быть реализована в веб-приложении с применением функций Membership API.

• Создайте страницу входа, которая использует готовый элемент управленияLogin или класс Membership для проверки введенных удостоверений иаутентификации пользователей.

Page 29: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 29

Настройка Membership API

Все шаги по конфигурированию за исключением настройки поставщика можновыполнить с помощью ASP.NET WAT (Web Site Administration Tool - инструментадминистрирования веб-сайтов), в состав которого входит мастер настройкибезопасности.

Page 30: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 30

Пример. Настройка SQL Express

Page 31: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 31

Пример. Login.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master"

AutoEventWireup="true" CodeBehind="Login.aspx.cs"

Inherits="WFApplication1.Login" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent"

runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent"

runat="server">

</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent«

runat="server">

<asp:TextBox ID="LoginTB" runat="server" AutoPostBack="true"/>

<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>

<asp:Button ID="LoginBTN" runat="server" Text="Login"

OnClick="LoginBTN_Click"/>

<br/>

<asp:Label ID="LabelResult" runat="server"></asp:Label>

</asp:Content>

Page 32: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 32

Пример. Login.aspx.cs

public partial class Login : System.Web.UI.Page

{

protected void LoginBTN_Click(object sender, EventArgs e)

{

if (Membership.ValidateUser(LoginTB.Text, PassTB.Text))

{

LabelResult.Text = "Loged In";

}

else

{

LabelResult.Text = "Failed";

}

}

}

Page 33: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 33

Пример. Web.config

Page 34: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 34

Результат

Page 35: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 35

Элементы управления проверки достоверности

В состав ASP.NET входит элементы управления проверкой достоверности. Этиэлементы выполняют за разработчика приличную часть сложной работы,упрощая процесс проверки и избавляя от необходимости писать длинный код. :

• RequiredFieldValidatorКонтролирует, не пуст ли проверяемый элемент управления.

• RangeValidatorКонтролирует, находится ли значение связанного элемента управления впределах определенного диапазона.

• CompareValidatorКонтролирует, соответствует ли значение данного элемента управленияопределенной операции сравнения (больше, меньше и т.д.) с другойконстантой или значением элемента управления

• RegularExpressionValidatorКонтролирует, соответствует ли значение данного элемента управленияопределенному регулярному выражению

• CustomValidatorПозволяет определить любую клиентскую или серверную операцию проверкидостоверности JavaScript для выполнения собственной логики проверкидостоверности

• ValidationSummaryОтображает итоговую информацию с сообщениями об ошибках для каждогодавшего сбой элемента управления

Page 36: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 36

Элемент управления RegularExpressionValidator

Элемент управления RegularExpressionValidator является одним изсамых мощных средств в наборе инструментов разработчикаприложений ASP.NET. Он позволяет проверять текст путемсопоставления с образцом, определенным в регулярном выражении.От разработчика требуется всего лишь установить это регулярноевыражение в свойстве ValidationExpression.

Page 37: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 37

Часто используемые регулярные выражения

СодержимоеРегулярное выражение

Описание

Адрес электронной почты

\S+@\S+\.\S+

Определяет электронный адрес, в котором обязательно должен присутствовать символ @ и точка (.), и допускает наличие только непробельных символов

Пароль \w+

Определяет пароль, допускающий любую последовательность словесных символов (букв, пробелов или символов подчеркивания)

Пароль специфической длины

\w{4,10}Определяет пароль, который должен состоят не менее чем из 4, но и не более чем из 10 символов

Расширенный пароль

[a-zA-Z]\w{4,10}

Определяет пароль, в котором, как в пароле специфической длины, может всего присутствовать от 4 до 10 символов. Хитрость состоит в том, что первый символ должен находиться в диапазоне a-z или A-Z (т.е. должен начинаться с обычной буквы)

Еще один расширенный пароль

[a-zA-Z]\w*\d+\w*

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

Поле ограниченной длины символов

\S{4,10}

Определяет строку длиной от 4 до 10 символов (подобно примеру пароля), но позволяет использовать специальные символы (звездочки, амперсанды и т.д.)

Page 38: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 38

Пример. Login.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"

CodeBehind="Login.aspx.cs" Inherits="WFApplication1.Login" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">

</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">

<asp:RegularExpressionValidator runat="server" ID="LoginValidator"

ControlToValidate="LoginTB" ValidationExpression="\S{4,5}"

ErrorMessage="Incorrect Login" Display="dynamic">

Input Correct Login

</asp:RegularExpressionValidator>

<asp:TextBox ID="LoginTB" runat="server" OnTextChanged="LoginTB_TextChanged"

AutoPostBack="true"/>

<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>

<asp:Button ID="LoginBTN" runat="server" Text="Login" OnClick="LoginBTN_Click"/>

<br/>

<asp:Label ID="LabelResult" runat="server"></asp:Label>

</asp:Content>

Page 39: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 39

Результат

Page 40: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 40

ASP.NET AJAX на сервере: элемент управления ScriptManager

Элемент ScriptManager является "мозговым центром" серверной части моделиASP.NET AJAX. Этот веб-элемент управления не имеет никакого визуальногопредставления на странице. Однако он решает ключевую задачу -визуализирует ссылки на JavaScript-библиотеки ASP.NET AJAX.

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

Каждая страница, которая использует функции ASP.NET AJAX, требует наличияэкземпляра ScriptManager. Внутри страницы допустимо иметь только одинэлемент управления ScriptManager.

Если функции ASP.NET AJAX используются во всем веб-сайте, имеет смыслпоместить элемент ScriptManager в мастер-страницу.

Все элементы управления ASP.NET AJAX нуждаются в ScriptManager. Если ихразместить на странице, которая не содержит ScriptManager, работать они небудут и приведут к генерации исключения InvalidOperationException.

Например, UpdatePanel - удобный элемент управления, который позволяет взятьобычную страницу с серверной логикой и обеспечить ее обновление в лишенноммерцания стиле Ajax.

Page 41: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 41

ASP.NET AJAX Control Toolkit

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

Собственно платформа ASP.NET не содержит какие-либо расширителиэлементов управления. Их включает в себя инструментарий ASP.NETAJAX Control Toolkit.

Наиболее примечательная особенность инструментария ASP.NET AJAX втом, что он разрабатывается с применением совместной модели соткрытым исходным кодом, которая позволяет принимать участие вразработке всему сообществу. Инструментарий ASP.NET Control ToolkitAJAX является бесплатным и включает полный исходный код.

Page 42: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 42

Установка инструментария ASP.NET AJAX Control Toolkit

Page 43: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 43

Расширители ASP.NET AJAX Control Toolkit

Имя Описание

AlwaysVisibleControlExtenderЭтот расширитель фиксирует элемент управления в определенной позиции (например, в верхнем левым углу веб-страницы) даже при прокрутке содержимого страницы

AnimationExtender

Этот мощный и удивительно гибкий расширитель позволяет добавлять анимационные эффекты, такие как изменение размеров, перемещение, затухание, изменение цвета и многие другие, по отдельности или в комбинации друг с другом

AutoCompleteExtender

Этот расширитель позволяет предоставлять список предложенных записей на основе частичного ввода данных пользователем. Список записей генерируется методом веб-службы, как описано в предыдущем разделе

CalendarExtender

Этот расширитель отображает всплывающий календарь, который может быть присоединен к текстовому полю для облегчения ввода даты. Когда пользователь выбирает дату, она вставляется в присоединенный элемент управления

CascadingDropDownЭтот расширитель позволяет присоединять раскрывающиеся списки, не прибегая к кодированию решения вручную

CollapsiblePanelExtenderЭтот расширитель позволяет сворачивать и разворачивать панели на странице. Остальная часть содержимого страницы обтекает их автоматически

ColorPickerExtenderЭтот расширитель отображает всплывающий инструмент для выбора цвета, который может быть присоединен к текстовому полю для облегчения выбора цвета

Page 44: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 44

Расширители ASP.NET AJAX Control Toolkit

ColorPickerExtenderЭтот расширитель отображает всплывающий инструмент для выбора цвета, который может быть присоединен к текстовому полю для облегчения выбора цвета

ConfirmButtonExtender

Этот расширитель перехватывает щелчки на элементах управления Button, LinkButton или ImageButton и выводит на экран подтверждающее сообщение. Событие щелчка подавляется, если пользователь решает отменить действие в диалоговом окне подтверждения

DragPanelExtender Этот расширитель позволяет перетаскивать панель по странице

DropDownExtender

Этот расширитель превращает практически любой элемент управления в раскрывающийся, когда курсор мыши помещается поверх него. Например, DropDownExtender можно использовать в сочетании с обычным элементом управления Label. Тогда пользователь сможет переместить курсор мыши над ним, выбрать другой элемент из списка (тем самым изменяя текст в метке) и затем сместить курсор мыши с элемента управления (позволяя метке вернуться к своему обычному виду)

DropShadowExtender

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

DynamicPopulateExtenderЭтот простой расширитель заменяет содержимое элемента управления результатом вызова метода веб-службы

Page 45: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 45

Расширители ASP.NET AJAX Control Toolkit

FilteredTextBoxExtender

Этот расширитель позволяет запретить ввод определенных символов в текстовом поле (например, букв в текстовом поле, которое содержит числовые данные). Он предназначен для дополнения проверки достоверности, а не ее замены, поскольку злоумышленники могут обойти фильтрацию, изменяя визуализированную страницу или отключая JavaScript в браузере

HoverMenuExtenderЭтот расширитель позволяет отображать содержимое во всплывающем окне рядом с элементом управления, когда пользователь задерживает курсор мыши над ним

ListSearchExtender

Этот расширитель позволяет пользователю искать элементы в ListBox или DropDownList, вводя первые несколько букв текста элемента. Элемент управления ищет элементы и переходит к первому соответствию, по мере того как пользовательские вводит текст

MaskedEditExtender

Этот расширитель ограничивает вид допустимого ввода в текстовом поле с использованием маски. (Маска - это строка, которая определяет модель текста фиксированной длины и предоставляет готовые символы для облегчения пользователю ввода. Например, маска телефонного номера может отображать в текстовом поле набор символов "(___)___-____". По мере того как пользователь выполняет ввод, заполнители заменяются допустимыми цифрами, а нечисловые символы отклоняются.) MaskedEditExtender можно применять в сочетании с MaskedEditValidator, гарантируя, что пользователь не сможет обойти код JavaScript и ввести недопустимое значение

ModalPopupExtenderЭтот расширитель позволяет создавать иллюзию модального диалогового окна, затемняя страницу, отключая элементы управления и отображая наложенную панель поверх них

Page 46: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 46

Расширители ASP.NET AJAX Control Toolkit

MultiHandleSliderExtender

Этот расширитель преобразует обычный элемент управления TextBox в ползунок. Однако этот ползунок обладает функциями, которые выходят за рамки его стандартного серверного эквивалента ASP.NET. Наиболее примечательно то, что поддерживается несколько ползунков, которые могут перетаскиваться вдоль дорожки независимо друг от друга. Это полезно, когда ползунок предназначен для указания диапазона значений

MutuallyExclusiveCheckBoxExtender

Этот расширитель позволяет связывать "ключ" с несколькими элементами управления CheckBox. Когда пользователь щелкает на флажке, который расширен подобным образом, отметка с любого другого флажка с тем же самым ключом снимается автоматически

NumericUpDownExtender

Этот расширитель присоединяется к текстовому полю, чтобы обеспечить конфигурируемые кнопки стрелок вверх и вниз (справа от него). Эти кнопки увеличивают числовое значение или значение даты в текстовом поле

PagingBulletedListExtender

Этот расширитель присоединяется к элементу управления BulletedList и придает ему возможности разбиения на страницы на стороне клиента, что позволяет разделить длинный список на меньшие разделы

PasswordStrength

Этот расширитель присоединяется к текстовому полю. По мере ввода он ранжирует криптографическую надежность значения текстового поля (чем выше показатель, тем большую трудность пароль представляет для взлома). Этот расширитель предназначен для использования в качестве ориентира для поля создания пароля

PopupControlExtenderЭтот расширитель предоставляет всплывающее содержимое, которое может отображаться рядом с любым элементом управления

Page 47: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 47

Расширители ASP.NET AJAX Control Toolkit

ResizableControlExtenderЭтот расширитель позволяет пользователю изменять размеры элемента управления с помощью конфигурируемого маркера, который отображается в нижнем правом углу

RoundedCornersExtenderЭтот расширитель скругляет углы любого элемента управления, придавая ему аккуратный, профессиональный внешний вид

SliderExtenderЭтот расширитель преобразует текстовое поле в графический ползунок, который позволяет пользователю выбирать числовое значение, перетаскивая ползунок в позицию на дорожке

SlideShowExtender

Этот расширитель присоединяется к изображению, заставляя его выводить на экран последовательность изображений. Изображения предоставляются посредством метода веб-службы, и показ слайдов может выполняться в бесконечном цикле или с применением созданных кнопок воспроизведения, паузы и перехода к предыдущему или следующему изображению

TextBoxWatermarkExtender

Этот расширитель позволяет автоматически изменять цвет фона и предоставлять определенный текст, когда элемент управления TextBox пуст. Например, текстовое поле могло бы включать светло-серый текст "Введите значение на бледно-синем фоне". Этот текст исчезает, когда курсор помещается в текстовое поле или немедленно после ввода значения

ToggleButtonExtenderЭтот расширитель превращает обычный элемент управления CheckBox из ASP.NET во флажок с изображением

UpdatePanelAnimationExtender

Этот расширитель позволяет использовать те же анимации, что и AnimationExtender. Однако он предназначен для работы с элементом управления UpdatePanel и автоматического выполнения этих анимаций, когда обновление находится в состоянии выполнения или как только панель была обновлена

ValidatorCalloutExtender

Расширяет логику клиентской стороны элементов управления проверкой достоверности ASP.NET, чтобы они использовали всплывающие выноски проверки достоверности, которые указывают на элемент управления с недопустимым вводом

Page 48: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 48

Элементы управления ASP.NET AJAX Control Toolkit

Имя Описание

Accordion

Этот элемент управления укладывает несколько панелей содержимого друг поверх друга и позволяет их просматривать по одной. При щелчке панель развертывается, а другие панели сворачиваются (оставляя видимым только заголовок). Дополнительные функции включают автоматическое затухание и опцию ограничения размера элемента управления (в этом случае большие области содержимого, когда они видимы, используют прокрутку)

AsyncFileUpload

Этот элемент управления подобен веб-элементу управления FileUpload, за исключением того, что он выполняет его работу асинхронно, разрешая пользователю продолжить взаимодействовать со страницей. (Очевидно, что обратная отправка страницы или переход к новой странице прервут асинхронную передачу файлов.) Элемент управления AsyncFileUpload может быть также сконфигурирован для отображения другого элемента управления во время загрузки. Обычно этот второй элемент управления (на который ссылается свойство ThrobberID) отображает простую анимацию, что ставит пользователя в известность о продолжении выполнения загрузки

ComboBox

Этот элемент управления был создан по примеру поля со списком Windows, которое предоставляет раскрывающийся список (подобный элементу управления DropDownList ASP.NET) и позволяет пользователю вводить произвольный текст (как элемент управления TextBox в ASP.NET). Он воспринимает многие элементы интерфейса программирования и большинство соглашений своего Windows-аналога

Editor

Этот удивительно мощный элемент управления предоставляет средства редактирования HTML-разметки, а также панель инструментов команд. Пользователь может переключиться между тремя представлениями: Html (которое отображает код разметки), Design (отображающее корректно визуализированное представление, подобно текстовому процессору) и Preview (которое аналогично Design, но без возможности редактирования)

Page 49: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 49

Элементы управления ASP.NET AJAX Control Toolkit

NoBot

Этот элемент управления выполняет несколько проверок, пытаясь выяснить, неосуществляет ли доступ к странице автоматизированная программа (робот), а нечеловек. Если NoBot решит, что доступ к странице производится роботом, запросбудет отклонен. Это позволяет предотвратить выполнение программ, которыекрадут содержимое или отправляют в блог спам-комментарии, хотя, понятно, егоможно обойти.Например, NoBot вынуждает браузер выполнить вычисление с помощьюJavaScript, которое использует HTML DOM, и передает результат,предназначенный для выявления обращений к странице, инициированных небраузером. NoBot может также отклонять запросы, которые выполняют обратнуюотправку формы слишком быстро или повторяют ее слишком часто в течениеопределенного интервала. Оба эти вида поведения наводят на мысль, чтодействует автоматизированная программа, а не человек

Rating

Этот элемент управления позволяет пользователям устанавливать рейтинг,перемещая курсор мыши над последовательностью значков звездочек, пока небудет выделено требуемое их количество

ReorderList

Этот элемент управления создает шаблонный список с возможностью прокрутки,который позволяет пользователю изменять порядок следования пунктов,перетаскивая их

Seadragon

Этот усовершенствованный элемент управления позволяет пользователю вшироких пределах масштабировать изображение, поддерживающее оченьбольшое увеличение, В действительности эти изображения составлены из сериинамного меньших мозаичных фрагментов, управление которыми производится навеб-сервере. Для создания изображения Seadragon нужен бесплатный инструментDeep Zoom Compose. Следует также отметить, что эти увеличиваемыеизображения являются значительно более громоздким средством, чем встроенноев Silverlight

TabContainer

Этот элемент управления напоминает вкладки, отображаемые в Windows. Каждаявкладка имеет заголовок, и пользователь переходит от одной вкладки к другой,щелкая на заголовках

Page 50: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 50

Пример. Site.Master

<%@ Register TagPrefix="ajaxToolkit" Namespace="AjaxControlToolkit"

Assembly="AjaxControlToolkit" %>

<ajaxToolkit:ToolkitScriptManager runat="server">

<Scripts>

<asp:ScriptReference Name="jquery" />

<asp:ScriptReference Name="jquery.ui.combined" />

<asp:ScriptReference Name="WebForms.js" Assembly="System.Web"

Path="~/Scripts/WebForms/WebForms.js" />

<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web"

Path="~/Scripts/WebForms/WebUIValidation.js" />

<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web"

Path="~/Scripts/WebForms/MenuStandards.js" />

<asp:ScriptReference Name="GridView.js" Assembly="System.Web"

Path="~/Scripts/WebForms/GridView.js" />

<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web"

Path="~/Scripts/WebForms/DetailsView.js" />

<asp:ScriptReference Name="TreeView.js" Assembly="System.Web"

Path="~/Scripts/WebForms/TreeView.js" />

<asp:ScriptReference Name="WebParts.js" Assembly="System.Web"

Path="~/Scripts/WebForms/WebParts.js" />

<asp:ScriptReference Name="Focus.js" Assembly="System.Web"

Path="~/Scripts/WebForms/Focus.js" />

<asp:ScriptReference Name="WebFormsBundle" />

<%--Site Scripts--%>

</Scripts>

</ajaxToolkit:ToolkitScriptManager>

Page 51: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 51

Пример. Login.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"

CodeBehind="Login.aspx.cs" Inherits="WFApplication1.Login" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">

</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">

<ajaxToolkit:CalendarExtender ID="Calendar1" runat="server"

TargetControlID="LoginTB" Animated="true" >

</ajaxToolkit:CalendarExtender>

<asp:TextBox ID="LoginTB" runat="server" OnTextChanged="LoginTB_TextChanged“

AutoPostBack="true"/>

<asp:TextBox ID="PassTB" runat="server" TextMode="Password"/>

<asp:Button ID="LoginBTN" runat="server" Text="Login" OnClick="LoginBTN_Click"/>

<br/>

<asp:Label ID="LabelResult" runat="server"></asp:Label>

</asp:Content>

Page 52: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 52

Результат

Page 53: C# Web. Занятие 07

http://www.slideshare.net/IgorShkulipa 53

Лабораторная работа №7.

К лабораторной работе №6 добавить возможность авторизации,валидацию ввода в форму и элементы AJAX Toolkit