Подтвердить что ты не робот

Страница ASP.NET "Page_Load" стрельба перед событием Master Page 'Page_Load'?

На моей главной странице у меня есть небольшой метод в событии Page_Load, который проверяет, вошел ли пользователь в систему и перенаправляет его на страницу входа, если нет.

Проблема заключается в том, что для некоторых моих страниц события Page_Load предполагают, что пользователи вошли в систему, и эти события, похоже, срабатывают перед проверкой входа на главной странице, что вызывает ошибки.

Каким образом это можно сделать? Любые события, которые я могу использовать, кроме Page_Load на моих страницах, которые будут срабатывать после главной страницы?

4b9b3361

Ответ 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>

НТН.