Как вы можете отобразить предупреждение о тайм-ауте сеанса, которое достаточно умно для обработки нескольких открытых браузеров или вкладок - PullRequest
17 голосов
/ 12 декабря 2008

Я реализовал предупреждение о тайм-ауте сеанса, используя javascript, который просто спрашивает пользователя, хотят ли они продлить сеанс или выйти из системы. Проблема в том, что это для портала интрасети, где опытные пользователи часто имеют несколько окон или вкладок браузера, открытых одновременно для приложения. В настоящее время им будет предложено выйти из каждого окна браузера. Как я могу сделать код умнее, чтобы обнаружить, что они активно используют другой сеанс браузера?

Ответы [ 3 ]

2 голосов
/ 12 декабря 2008

Вы не можете рассчитывать на то, что все вкладки / окна будут частью одного сеанса, потому что они могут появляться и содержаться в отдельных процессах, и вы не можете контролировать это.

Но если ваш код ссылается на файл cookie Javascript, вы можете проверить состояние псевдосеанса с помощью обратной передачи (синхронный или асинхронный AJAX). Но тогда вы зависите от того, какие куки включены в браузере пользователя.

2 голосов
/ 12 декабря 2008

Вы должны проверить состояние сеанса на сервере с помощью Ajax и отслеживать все открытые сеансы / окна, которые есть у пользователя. После этого вы сможете настроить таргетинг только на один из доступных сеансов с предупреждением о выходе из системы.

В ответ на ваш комментарий:

Не используйте встроенный механизм сеанса, разработайте свой собственный, используя постоянный массив на стороне сервера или журнал базы данных.

Нет, ничто в HTTP-запросе не говорит вам, сколько браузеров открыто, но вы можете назначить свой собственный cookie sessionID, когда пользователь открывает каждое окно браузера. Сделайте Ajax-вызов на сервер, посмотрите, не истек ли тайм-аут пользователя, и если у вас самая низкая (или последняя) запись в журнале сеансов, то вы - браузер, который получает предупреждение.

0 голосов
/ 12 декабря 2008

Будет ли это работать?

Сохранить файл cookie Javascript и проверить, чтобы определить, был ли сеанс расширен в другой вкладке?

похоже, это работает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...