У меня есть веб-сайт, который использует базовую аутентификацию форм ASP.Net. В файле web.config мы указываем конкретные правила доступа для отдельных страниц и каталогов. Все отлично работает.Как обработать событие страницы перед перенаправлением подлинности с помощью форм?
Однако, теперь у меня есть некоторые новые требования. Мой домен содержит множество различных сайтов, устанавливаемых между разными субдоменами. У меня есть два поддомена DNS, которые сопоставляются с этим приложением. Один из них - aaa.mysite.com, а другой - www.mysite.com. Если конкретный веб-запрос получен из субдомена aaa.mysite.com для страницы, защищенной FormsAuthentication, перед обработкой логики FormsAuthentication (пользователь будет перенаправлен на страницу входа в систему), я хочу сначала выполнить код. Этот код по существу попытается прочитать куки из третьего субдомена, скажем, zzz.mysite.com, а если не существует, Response.Redirect на страницу входа в приложение zzz.mysite.com.
Я попытался обработать это с помощью базового класса, который могла бы наследовать любая из защищенных страниц с проверкой подлинности с помощью форм, а затем вызов специального кода в функции Page_PreInit. Однако FormsAuthentication обрабатывает перенаправление на страницу входа еще до вызова функции PreInit.
Кто-нибудь знает хороший способ справиться с этим делом? Если Page_PreInit не будет работать, где я могу поместить код так, чтобы он выполнялся до перенаправления FormsAuthentication, но где у меня также есть доступ к какой странице он (и какой класс он наследует, поэтому я могу видеть, наследует ли он от System.Web.UI.Page или если он наследуется от моего специального BasePage).
Любые идеи? Я думаю, что я мог бы использовать Globals Application_BeginRequest, но тогда это будет вызвано для каждого отдельного запроса, что не кажется очень хорошей идеей.
Я не могу быть первым, кому нужен способ справиться с событием до FormsAuthentication, поэтому, пожалуйста, если бы вы могли дать мне дополнительные идеи, я был бы очень благодарен!
Спасибо!
Да, это правда, cookie написан на .example.com, так что все субдомены могут получить к нему доступ. Вопрос остается, если файл cookie еще не существует, как я могу ответить Response.Redirect их в другой домен до перенаправления проверки подлинности форм? – kazzamalla
Я могу определенно написать код в моем файле Global.asax.cs для этого события, но не тот огонь после того, как пользователь был аутентифицирован? Я хочу сделать свое перенаправление до того, как пользователь будет перенаправлен формами «Аутентификация» на страницу входа в систему и попросил войти в систему. Однако, как и в моем комментарии к Хэнку, мне нужен способ проверить, защищена ли страница, которую пользователь пытается получить, с помощью проверки подлинности форм. Есть идеи? – kazzamalla