Если у вас есть настройка проверки подлинности с помощью форм для перенаправления на login.aspx при доступе к защищенной странице, какой хороший способ определить в login.aspx, был ли пользователь отправлен туда, потому что он еще не вошел в систему, или потому что его билет проверки подлинности форм является истекший? Я хочу отобразить сообщение "Истекло время ожидания".
(Я не упоминаю слово сеанс в этом вопросе, потому что ASP.NET рассматривает их так отчетливо, однако, если есть хорошее решение, которое включает сеанс, я все уши)
Раньше я решал эту проблему, задавая еще одну функцию "hasloggedin", когда пользователь входит в систему, а затем проверяет, существует ли она, чтобы определить, истек ли это время, и затем отображать соответствующее сообщение. Но, должно быть, это обычная проблема?
Ответ 1 · рейтинг 2 · PortageMonkey
При проверке подлинности с помощью форм автоматически добавляется параметр URL-адреса ReturnURL, указывающий, какая страница (если есть) инициировала перенаправление на страницу входа. Большинство веб-сайтов имеют в качестве страницы по умолчанию "Default.aspx" или "index.html" и т. Д. Вы можете проверить ReturnURL, чтобы узнать, содержит ли он страницу по умолчанию или какую-либо другую страницу в вашем приложении.
ПРИМЕР:
string refererURL;
if (page.Request.QueryString["ReturnURL"] != null)
{
refererURL = page.Request.QueryString["ReturnURL"].ToString();
}
//Check to see if user was redirected because of Timeout or initial login
//Where "Default.aspx" is the default page for your application
if (refererURL != "" && refererURL != (ResolveUrl("~") + "Default.aspx"))
{
//Show HTML etc showing session timeout message
}
else // User redirected here to to initial login
{
//Show HTML showing initial login HTML message etc
}