Реклама:

Перед началом работы модуль Role Manager запускает также событие GetRoles. Если вы обработаете это событие и зададите для свойства Roles Populated в Role-ManagerEventsArgs значение true, то сможете пропустить встроенную логику и использовать собственные роли. Так можно поступить, если необходимо, предположим, заменить стандартные роли для специальных страниц. Просто создайте Generic-Principal и самостоятельно задайте значения Context, User и Thread. CurrentPrincipal.

Вы можете обработать это событие в модуле IlttpModule или global.asax, добавив метод RoleManager_GetRoles.

Метод GetRoles в global.asax

void RoleManager_GetRoles(object sender, RoleManagerEventArgs e) {

// Для некоторых специальных страниц задаем роли вручную if (Request.Path.EndsWith("specialPage.aspx"))

{

Generic-principal р = new GenericPrincipal( Context.User.Identity,

new string[] { "SpecialRoiel". "SpecialRole2" });

Context.User = Thread.CurrentPrincipal = p; e.RolesPopulated = true;

>

}

Этот же код в модуле HttpModule выглядит несколько иначе.

Метод GetRoles в HttpModule

public class MyRolesModule : IHttpModule {

public void Imt(HttpApplication context) <

// Подписываемся на событие RoleManagerModule.GetRoles RoieKanagerModule mod = (RoleManagerModule) context.Modules["RoleManager"];

mod.Getfloles += new

RoleManagerEventHandler(MyRolesHodule_GetRoies);

}

private void MyRolesModule Ge:Roies(ob:ect sender, RoleManagerEventArgs e)

<

HttpContext ctx = HttpContext.Current;

if (ctx.Request.Path.EndsWithC'specialPage.aspx")) {

GenericPrincipal p - new Ue"ericPrincir>al( ctx.User.Identity,

new string[] { "SpecialRoiel", "SpecialRole2" ));

ctx.User = Thread.CurrentPrincipal = p; e.RolesPopulated = true;

}

}

public void DisposeQ \ }

>

Конфигурация Role Manager

В элементе <mleManager> файла конфигурации вы можете задавать параметры кэширования и провайдер ролей, используемый по умолчанию. Настройки конфигурации Role Manager приведены в табл. 6-5.

Табл. 6-5. Настройки конфигурации Role Manager

Настройка

Описание

enabled

Включает службу Rale Manager и соответствующий модуль

cache Rolesln Cookie

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

cookieName

Указывает имя файла cookie, в котором котируются роли (если включено кэширование)

createPersislentCoookie

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

cookieTimeout

Указывает время жизни файла cookie, в минутах. Чем больше заданное значение, тем дольше изменения членства в ролях (например, внесенные администратором) будут влиять на ваше приложение

cookie SlidingExpirat ion

Указывает, должно ли автоматически обновляться время ожидания для файла cookie. Автоматическое обновление файла выполняется im истечении менее половицы времени, указанного в настройке cookieTimeout. Отключение скользящих сроков гарантирует периодическое получение самых последних cookies с ролями. Эту настройку рекомендуется отключать

cookie RequireSSL

Если этой настройке присвоить значение true, то файлы cookies <■ ролями будут задаваться только когда запрос защищен с помощью SSL. Кроме тога, файлу cookie будет задан флаг secure, указывающий совместимому с RFC браузеру отправлять файлы cookies только через HTTP. Этой настройке всегда следует присваивать значение true

cookie Protection

Определяет метод защиты файла cookie от просмотра и фальсификации. Значение АН указывает, что файл cookie зашифрован и защищен с помощью Message Authentication Code (MAC). Этой настройке можно присваивать значения Encryption, Validation и None. Рекомендуется задавать значение АН

maxCachedResults

Указывает, сколько ролей должно кэшироваться и файле cookie. Помните, что размер файлов cookies ограничен 4 Кбайт. Если количество ролей превышает заданное значение, они не кэширу-ются. В файле cookie нужно иметь возможность задавать до 200

ролей

cookiePath

Определяет, на какие части приложения должны отправляться файлы cookies. Для указания URL используется символ «/». Вы можете изменить путь, указав имена виртуального каталога, например /МуАрр, однако следует знать, что пути cookies чувствительны к регистру, а адреса URL в IIS не чувствительны к нему. Это означает, что если пользователь попытается выполнить навигацию к ресурсу /гауарр, браузер не отправит файл cookie. Для этой настройки лучше всего оставить значение по умолчанию

Пример конфигурации RoleManager


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