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

Как выйти из системы, когда сеанс заканчивается или заканчивается

Каков наилучший способ выхода из системы, когда сеанс заканчивается или истекает?

Спасибо за любую помощь.

4b9b3361

Ответ 1

Это действительно зависит от желаемой функциональности, которую вы ищете. Я предполагаю, что вы используете 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!