У меня есть следующая проблема:
В моем web.config у меня есть следующие настройки авторизации:
<authentication mode="Forms">
<forms loginUrl="~/LogIn" timeout="2880" name=".ASPXFORMSAUTH" defaultUrl="~/Dashboard/Dashboard.aspx"/>
</authentication>
Код, который я унаследовал от предыдущей разработки, сохраняет пользовательский объект в Session после входа в систему. Я планирую и дальше использовать эту логику.
Теперь пользователь переходит на страницу. Cookie создается при входе в систему, а информация о пользователе сохраняется в сеансе. Теперь пользователь закрывает вкладку страницы, но держит браузер открытым. Пользователь ожидает x времени, в течение которого сеанс истекает, но не cookie. Теперь пользователь пытается перейти непосредственно на страницу, на которой он был ранее. Проверка подлинности форм предполагает, что они вошли в систему, но это не так. Таким образом, мой вошедший в систему пользователь имеет значение null.
Я пытаюсь сделать это:
protected void Page_Init(object sender, EventArgs e)
{
if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null))
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
else
{
//Continue with page init
}
}
К сожалению, это не приводит к тому, что текущая страница отменяет свой жизненный цикл.
Мне интересно несколько вещей:
- Как этот сценарий правильно обрабатывается в поле?
- Является ли это приемлемым решением, если не правильным?
- Есть ли способ не позволить себе проверять, является ли LoggedInUser нулевым во время остальных событий жизненного цикла моей страницы (загрузка страницы, pageloadcomplete)? Я предполагаю, что мог бы установить AutoWireEvents в false, но подключение моего собственного жизненного цикла кажется более неправильным.
Спасибо