#c# #asp.net
#c# #asp.net
Вопрос:
На моей главной странице у меня есть небольшой метод в Page_Load
событии, который проверяет, вошел ли пользователь в систему, и перенаправляет их на страницу входа, если нет.
Проблема в том, что для некоторых моих страниц Page_Load
события предполагают, что пользователи вошли в систему, и эти события, похоже, запускаются перед проверкой входа в систему на главной странице, что вызывает ошибки.
Какие есть способы обойти это? Какие-либо события, которые я могу использовать на своих страницах, кроме Page_Load, которые будут запускаться после главной страницы?
Комментарии:
1. Вы не используете проверку подлинности в формах? Вам нужно только указать loginUrl для автоматического перенаправления на ваш Login.aspx на любой странице, если пользователь не аутентифицирован или время сеанса истекло. msdn.microsoft.com/en-us/library /…
Ответ №1:
У вас богатый цикл страницы с большим количеством событий для использования. Возможно, вы могли бы использовать Page_Init
для проверки, авторизован ли пользователь на главной странице. Или использовать Page_PreRender
на других страницах.
Комментарии:
1. Фантастика — изменил проверку на Page_Init, и теперь она работает идеально. Спасибо!
Ответ №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>
HTH.