2009-04-29 3 views
1

Возможно ли уведомить пользователя о том, что сеанс истек? Может ли браузер действовать как сервер и получать такие уведомления?Уведомлять клиента об истекшем сеансе - веб-программирование

Одним из решений было бы сгенерировать JavaScript, который делает обратный отсчет на стороне клиента и в конце уведомляет клиента, но я завершен, если это можно сделать, чтобы сделать это первым способом?

И каковы последствия первого подхода? Есть ли проблемы безопасности?

Что может быть реализовано в django, например?

+2

Лично мне хотелось бы, чтобы это было лучше, если вы просто не закончили мою сессию, пока я где-то открывал страницу. Вы можете использовать JavaScript «pings», чтобы это сделать ... – Shog9

ответ

1

Возможно, у вас есть JavaScript, периодически опросая сервер для уведомлений (каждые 30 секунд, скажем), используя XMLHTTPRequest, чтобы проверить URL-адрес. Если сеанс не работает, сервер может помещать что-то на указанный ему URL, а затем может появиться уведомление. Вот как Stackoverflow реализует уведомления, которые кто-то еще ответил на вопрос, если вы находитесь в середине составления ответа.

0

Возможно, вы захотите посмотреть на comet, хотя я думаю, что таймер javascript будет гораздо лучшим решением, менее вероятно, сломается и будет проще реализовать.

Я не могу придумать никаких последствий для безопасности, поскольку вы предоставляете уведомление об истечении срока действия, а не выполняете аутентификацию на этом этапе.

0

Вы ищете какой-то тип comet. Вероятно, самый простой «сервер-push», который вы можете сделать, - это опрос сервера.

0

Фактически, в Django не существует истечения срока действия на стороне сервера, если вы используете файловую систему или механизм базы данных => это ваш идентификатор сеанса cookie вашего клиента, срок действия которого истекает. В противном случае, если вы используете сеанс на основе кеша, вы можете установить срок действия кеша на большее значение, чем истечение срока действия cookie сеанса.

После этого просто объявите cookie без истечения срока действия, чтобы пометить клиентский браузер при входе в систему и проверить на каждой странице идентификатор сеанса: , если нет cookie идентификатора сеанса, но ваш «флаг cookie», сеанс истек. Нет необходимости проверять сервер.

Смежные вопросы