Что делать с тайм-аутом пользователя, пытающегося использовать функциональность ajax? - PullRequest
0 голосов
/ 01 октября 2010

Вот сценарий:

  1. Вход пользователя в систему
  2. Пользователь встает, идет за кофе и разговаривает с коллегой Стивом на кухне в течение 15 минут
  3. Время ожидания сеанса пользователя
  4. Пользователь возвращается к рабочему столу и пытается использовать поле на своем экране, которое использует функциональность ajax

Теперь, на странице ajaxЯ проверяю, вошел ли он в систему, но что мне делать с пользователем?Если я просто ничего не возвращаю со страницы ajax, то пользователь не знает, почему поле не работает.Если я попытаюсь использовать заголовок («Location:»), это не будет работать, как ожидалось.

Я мог бы вернуть сообщение о том, что вам нужно обновить страницу, но это отчасти неубедительно.Что я хотел бы сделать, это вернуть пользователя обратно на главную страницу.Я мог бы сделать это, используя javascript, очевидно, но это зависит от того факта, что пользователь не просто пошел на http://website/ajaxpage.ajax.php и отключил javascript.Итак, как лучше всего справиться с этим?

ОБНОВЛЕНИЕ

Как насчет автоматического обновления страницы через 15 минут?Может быть, используя метатег?Или тайм-аут на странице?Это заставит пользователя просто автоматически видеть экран входа в систему, когда он садится, однако, если они находятся на одной странице в течение 15 минут, это может обновить и раздражать.

Ответы [ 4 ]

4 голосов
/ 01 октября 2010

Используется ли jsonp?Возможно, вы сможете вернуть функцию, которая устанавливает window.location и вызывается как обратный вызов.

В качестве альтернативы вы можете изменить свою логику в JS и вернуть объект JSON с индикатором тайм-аута, в которомВ этом случае вы можете обработать это соответствующим образом в обратном вызове AJAX.например, вы можете установить временное поле с надписью «Срок действия вашей сессии истек - пожалуйста, войдите снова», а затем перенаправьте их на страницу входа.Я не буду автоматически обновлять это.То, что вы можете сделать, это вставить некоторую интеллектуальную логику обнаружения простоя и управлять обновлением с помощью setTimeout. Вот пример того, кто использует Prototype, но вы, вероятно, не хотите основывать его на движении мыши.

1 голос
/ 01 октября 2010

Вы можете отправить обратно специальное сообщение со страницы Ajax, чтобы указать вашему коду JavaScript (запущенному в браузере пользователя), что ему необходимо обновить страницу.Чтобы сделать это , все что вам нужно это

window.location.reload(true);

https://developer.mozilla.org/en/DOM/window.location

0 голосов
/ 01 октября 2010

Вы можете установить session_id в файлах cookie и позволить пользователю «оставаться в системе на этом компьютере», чтобы, когда он истекает, и пользователь пытается использовать функцию ajax, он мог фактически войти в него.

0 голосов
/ 01 октября 2010

перед отправкой любых данных, которые вы собираетесь отправить на страницу ajax, отправьте очень быстрый запрос, который проверяет состояние сеанса, возвращает простое 1 или 0. 1, продолжает и выполняет действие ajax. в 0 вызовите другую функцию, которая открывает модальное поле «Логин», отправляет эту информацию для входа через ajax и снова получает 0 или 1 для не / успешного входа в систему. если возвращает 1, верните и продолжите начальное действие, в противном случае повторно представьте модальное окно входа в систему.

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