Страница ASP.NET "Page_Load" стрельба перед событием Master Page 'Page_Load'?
На моей главной странице у меня есть небольшой метод в событии Page_Load
, который проверяет, вошел ли пользователь в систему и перенаправляет его на страницу входа, если нет.
Проблема заключается в том, что для некоторых моих страниц события Page_Load
предполагают, что пользователи вошли в систему, и эти события, похоже, срабатывают перед проверкой входа на главной странице, что вызывает ошибки.
Каким образом это можно сделать? Любые события, которые я могу использовать, кроме Page_Load на моих страницах, которые будут срабатывать после главной страницы?
Ответы
Ответ 1
У вас есть богатый Цикл страниц с большим количеством событий для использования.
Возможно, вы можете использовать Page_Init
, чтобы проверить, зарегистрирован ли пользователь на главной странице.
Или используйте Page_PreRender
на других страницах.
Ответ 2
Если вам нужны вещи, которые должны произойти в MasterPage Page_Load перед событиями страницы, используйте параметр Page_PreRender
protected void Page_PreRender(object sender, EventArgs e)
на фактической странице.
Ответ 3
Вам нужно будет проверить, зарегистрирован ли пользователь для этих функций, выполнив: if (this.Page.User.Identity.IsAuthenticated == true) { .. }
. Ничто не может быть принято, это то, что вы испытываете. Вы также можете перенести свою регистрацию на страницу Page_Init или перенести ее на HTTP-модуль, который запускается при каждой загрузке страницы; там у вас есть доступ к широкому спектру событий, включая аутентификацию/авторизацию приложений.
Если вы используете проверку подлинности на основе форм, вы можете использовать файл конфигурации, чтобы вместо этого использовать этот элемент с помощью элемента авторизации.
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
НТН.