закрытие всех веб-страниц по истечении времени сеанса

Когда сеанс истекает в приложении asp.net, нам нужно закрыть все веб-страницы, которые уже открыты пользователем.

На каждой странице есть ссылка для выхода. Когда пользователь нажимает на эту ссылку, домашняя страница перенаправляется на эту страницу.

В этом случае другие открытые страницы также необходимо закрыть.

Как мы можем это сделать?


person gopal    schedule 18.12.2009    source источник
comment
Я думаю, вы можете перенаправить на свою домашнюю страницу   -  person ACP    schedule 18.12.2009
comment
вы не можете закрыть все страницы   -  person ACP    schedule 18.12.2009
comment
Проблема в том, что пользователь думает, что его сеанс заканчивается. Поэтому оставил остальные открытые страницы как было с данными. Здесь мы задаемся вопросом о безопасности данных.   -  person gopal    schedule 18.12.2009


Ответы (3)


Для всех страниц:

  1. AJAX обращается к серверу, чтобы проверить, истек ли срок действия сеанса.
  2. Разобрать результат от AJAX
  3. Если сеанс завершился, закройте окно или перенаправьте на страницу выхода из системы.
person mauris    schedule 18.12.2009
comment
Разве вызов AJAX к серверу не поддержит сеанс, особенно если он проверяет текущий сеанс? - person Razzie; 18.12.2009
comment
Я согласен с Раззи... Но что, если AJAX вызывает веб-сервис... Я новичок в веб-сервисе... Будет ли вызов веб-сервиса выполняться в том же сеансе, что и исходный вызов страницы... ?? - person The King; 18.12.2009
comment
тогда завершение сеанса может быть обработано вручную в дополнение к завершению сеанса ASP.NET. - person mauris; 18.12.2009
comment
Насколько я знаю, вы можете установить EnableSession только в веб-методе, используя атрибут WebMethod. Если вы включите его, сессия будет поддерживаться. Если вы отключите его, вы не будете знать, жива ли сессия... - person Vinz; 18.12.2009

Во-вторых, мы можем использовать то, что сказал @thephpdeveloper, особенно когда пользователь официально выходит из системы... (например, нажимает кнопку выхода). Однажды после формального выхода... Можно использовать такой обратный вызов Ajax, потому что сеанс будет действителен, но пользователя не будет... Используя это, мы можем сигнализировать странице и закрыть окно браузера.

person The King    schedule 18.12.2009

Как прокомментировал Раззи, выполнение обратного вызова AJAX для того же веб-приложения будет поддерживать сеанс. Использование веб-сервиса также не решит проблему.

Это решение позволяет избежать сохранения сеанса:

  • Храните каждую сессию в базе данных. Это можно сделать в событии Session_Start в Global.asax или после входа в систему.
  • Удалите сеансы с истекшим временем ожидания из базы данных в событии Session_End в вашем файле Global.asax или после выхода из системы.
  • Периодически выполняйте обратный вызов AJAX для другого веб-приложения, например. сеть, работающая на поддомене, чтобы проверить в базе данных, существует ли еще сеанс.

Я предлагаю вам использовать SessionID для идентификации сеансов.

person Vinz    schedule 18.12.2009