Реклама:

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

Выдача билетов

Вы можете создать билеты аутентификации по собственному усмотрению и явн^ управлять их содержимым. После этого вы можете зашифровать билет и выдать ег вручную. Это позволяет задавать и добавлять данные, определяемые пользователем! (они часто используются для кэширования ролей). Если вы выдаете билет вручную, учтите все конфигурационные настройки аутентификации Forms. Вам также нужно произвести ряд проверок, которые в противном случае будут выполнены встроенными API (например, проверку SSL, если настройке requireSSL присвоено значение true),. После задания билета нам нужно вручную выполнить перенаправление к изначально запрашиваемой странице. Следующий код конструирует объект FormsAuthentkation-Ticket и опционально добавляет в него данные.

Создание объекта Form$AuthentlcatlonTlck»t

Public static FormsAuthenticationTicket CreateAütnenticationTicket(string user-name, string userOata)

{

// Перехват кон-екста текущего запроса HttpContext context = HttpContext.Current;

I

// Полуение срока действия билета из конфигурации Forms AutnenticationSection config = (AutnenticationSection)

context.GetSection{"system.web/autnentication"); int timeout = (int)config.Forms.Timeout.TotalMinutes;

I

if (string.IsNullOrEmpty(userData)) ^serData = String.Empty;

// Создание билета аутентификации вручную и задание значений

FormsAutnenticationTicket ticket = new FormsAuthenticationTicket(

1, // Beocv-я

username. // Имя пользователя

DaT.eTirne.Now, // 8реня создания

DateTime.Now.AddMi"jtes(timeout). // Время истечения срока действия

false, // Постоянство

userData, // Опционаг.ы-ье. дачные

Fo'msAuthentication.FormsCookiePatn); // Путь

return ticker.;

>

После создания билета приведенный код нужно выдать вручную. Сконструируйте для файлов cookies объект HttpCookie и задайте для него релевантные свойства.

выпуск файла cookies

public, static void SetAuthenticationCookie(FormsAuthenticationTicket ticket)

{

// Перехват контекста текущего запроса. HttpContext context = HttpContext.Current;

// Шифрование билета.

string authcookie = FormsAuthentication.Encrypt(ticket);

// Создание нового файла cookies и указание содерхимого. HttpCookie cookie = new

HttpCookie(FormsAutnentication.FormsConkieName). cookie.Value = authcookie;

// Установка настройки requireSSL настроек домена, cookie.Secure = FormsAuthentication.RequireSSL; cookie.Domain - FormsAuthentication.CookieDomain;

/./ Задаем HttpOnly-данньіе cooKies ie будут ДОС умны для клиентского сценария cookie.HttpOnly = true;

// Посверяем наг.'чие -ребонен/я SS. if (!context.Reouest.IsSecureConnection 44 FormsAuthentication.RequireSSL) throw new H*tpException("Ticket requires SSL");

// Задаем данные cookies

context.Response.Cookies.Add(cookio);

)

Если вы хотите использовать строки запроса, нужно выполнить перенаправление и сконструировать строку запроса в формате:


⇐ Предыдущая страница| |Следующая страница ⇒