Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.125.171] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
У меня есть несколько эталонных страниц. например authorized.master, unauthorized.master. Я хочу, чтобы если пользователь аутентифицирован, то выводилась страница default.aspx и эталонной для нее было authorized.master, в противном случае unauthorized.master. Естественно, можно для каждой страницы в методе Page_PreInit добавить строчки if (this.User.Identity.IsAuthenticated) this.MasterPageFile = "authorized.master"; else this.MasterPageFile = "unauthorized.master"; Но как быть если страниц несколько(например 10-20). В каждую добавлять подобное не хочется. Первое что пришло в голову - написание модуля: public class MasterChangeModule : IHttpModule { public void Init(HttpApplication app) { app.BeginRequest += new EventHandler(OnBeginRequest); } public void OnBeginRequest(object sender, EventArgs e) { HttpApplication app = sender as HttpApplication; if (app == null) return; if (app.Context.User.Identity.IsAuthenticated) { // здесь можно как-то вытянуть из app.Context экземпляр Page? } } public void Dispose() { } } Но, как видите.. никак не могу сообразить как из контекста получить ссылку на экземпляр Page (если ее вообще можно получить) Или может есть варианты более приемлемые для моей задачи |
Сообщ.
#2
,
|
|
|
GarF1eld, Сделай базовый класс для всех страниц
class PageBase: System.Web.UI.Page{ protected void Page_Preinit(...){ if (this.User.Identity.IsAuthenticated) this.MasterPageFile = "authorized.master"; else this.MasterPageFile = "unauthorized.master"; } } и каждую страницу своего сайта унаследуй от нее class _Default: PageBase .... class Register: PageBase ... |
Сообщ.
#3
,
|
|
|
GRIENDERS, это было у меня в мыслях.. но почему-то этот вариант кажется мне не очень
|
Сообщ.
#4
,
|
|
|
Кстати, самый нормальный вариант
|
Сообщ.
#5
,
|
|
|
Есть еще контролы типа LoginView, который управляет появлением того или иного контента в зависимости от роли юзверя и статуса его аутентификации.
|