Каков наилучший способ выхода из системы, когда сеанс заканчивается или истекает?
Спасибо за любую помощь.
Каков наилучший способ выхода из системы, когда сеанс заканчивается или истекает?
Спасибо за любую помощь.
Это действительно зависит от желаемой функциональности, которую вы ищете. Я предполагаю, что вы используете FormsAuthentication.
Здесь нужно выделить две отдельные вещи: Сессия и файл FormsAuthentication. Если я не ошибаюсь, у обоих из них есть отдельные тайм-ауты.
Если проблема связана с тем, что сеанс завершен, но пользователь по-прежнему аутентифицирован, вы можете попробовать комбинацию из следующего:
1: Убедитесь, что cookie аутентификации имеет такое же значение тайм-аута, что и сеанс:
<authentication mode="Forms"><forms ... timeout="20" ... ><authentication>
<sessionState ... timeout="20" ... />
2: В событии Page_Load проверьте время ожидания сеанса:
if (context.Session != null && Context.Session.IsNewSession == true &&
Page.Request.Headers["Cookie"] != null &&
Page.Request.Headers["Cookie"].IndexOf("ASP.NET_SessionId") >= 0)
{
// session has timed out, log out the user
if (Page.Request.IsAuthenticated)
{
FormsAuthentication.SignOut();
}
// redirect to timeout page
Page.Response.Redirect("/Timeout.aspx");
}
(см. http://www.eggheadcafe.com/articles/20051228.asp информацию об обнаружении таймаута сеанса)
Если вам нужен более приятный пользовательский интерфейс, вы можете использовать javascript для запуска своего рода модального пользовательского интерфейса после X минут. Это всплывающее окно просто позволит пользователю инициировать щелчок на кнопке, который приведет к возврату AJAX на сервере, тем самым расширяя их аутентификацию и cookie сеанса, без необходимости перезагрузки страницы. Я никогда не реализовывал это раньше, но смотрю, этот парень создал элемент управления ASP.NET AJAX!
Если вы используете поставщик членства .net, просто установите параметр Timeout в файле web.config http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=VS.100).aspx