Проверьте, истек ли сеанс еще с ajax-запросом - PullRequest
1 голос
/ 22 августа 2011

Было несколько вопросов, подобных этому, в stackoverflow, но никто не ответил очень красноречиво:)

Я хочу иметь возможность отображать запрос на вход в систему, когда пользователь покидает свой компьютер в течение 20 минут и позволяет тайм-ауту сеанса.

  1. Простое «подождите 20 минут, а затем покажет подсказку» не будет работать, поскольку пользователь мог быть активен на сайте в другой вкладке.
  2. Стандартный ajax-запрос к серверу, чтобы проверить, все еще активен ли сеанс, по существу будет держать пользователя вошедшим в систему, так что он не будет делать ничего.

Есть ли способ сделать ajax-запрос к серверу, который не наследует текущий идентификатор сеанса? (чтобы избежать пункта 2)

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 декабря 2012

Почему вы не запускаете вызов ajax только тогда, когда пользователь инициирует действие на сайте, для выполнения которого у него нет разрешения?Таким образом, когда пользователь впервые заходит на веб-страницу, вы можете установить переменную сеанса с помощью php, например:

$_SESSION['active'] = true;

Когда истекает исходный сеанс, переменная больше не будет доступна.Затем, когда вам нужно проверить, истек ли сеанс или нет, в зависимости от действий пользователя, вы можете отправить запрос на сервер и проверить текущее состояние сеанса в зависимости от того, установлена ​​переменная сеанса или нет.

0 голосов
/ 22 августа 2011

Интересная проблема. Я полагаю, что решение будет заключаться в том, как сессия обрабатывается на стороне сервера.

Если вы предоставляете механизм мониторинга активности для вашего сеанса, произнесите переменную «$ last_active», которая отслеживает, когда был последний запрос, и обновляйте его всякий раз, когда запрос поступает на сервер, а затем, наоборот, завершите сеанс, если определенный Прошло время, и это поможет сохранить работоспособность, независимо от автоматических функций, предлагаемых PHP / APACHE.

Затем вы можете использовать условное выражение, например, если вы включите в свой URL-адрес «? Querylogin = 1». У вас может быть сценарий на стороне сервера, чтобы проверить наличие этой переменной GET, а затем дать ответ на AJAX. запрос, без обновления переменной "$ last_active". Я думаю, что это должно сделать.

0 голосов
/ 22 августа 2011

Стандартный ajax-запрос к серверу, чтобы проверить, все еще активен ли сеанс, по существу, оставит пользователя вошедшим в систему, так что это не будет выполняться.выполните проверку через 21 минуту:)

Есть ли способ сделать ajax-запрос к серверу, который не наследует идентификатор текущего сеанса?(во избежание возникновения пункта 2)

При условии, что вы используете файлы cookie, невозможно отправить запрос на сервер без файлов cookie.Однако вы можете настроить свой веб-сервер или инфраструктуру так, чтобы они не учитывали сеанс файлов cookie для определенного запроса / пути, а затем проверять действительность сеанса, не обновляя его.

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