Уведомить клиента об истекшей сессии - веб-программирование - PullRequest
1 голос
/ 30 апреля 2009

Можно ли уведомить пользователя о том, что сеанс истек? Может ли браузер выступать в роли сервера и получать такие уведомления?

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

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

Какая будет возможная реализация в django, например?

Ответы [ 4 ]

1 голос
/ 30 апреля 2009

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

0 голосов
/ 30 апреля 2009

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

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

0 голосов
/ 30 апреля 2009

Вы ищете что-то типа кометы . Вероятно, самый простой способ «проталкивания сервера» - опрос сервера.

0 голосов
/ 30 апреля 2009

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

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

...