Уведомлять клиента об истечении срока действия сеанса - веб-программирование

StackOverflow https://stackoverflow.com/questions/804624

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Вы ищете что-то вроде комета-типовая штука.Вероятно, самое простое "нажатие на сервер", которое вы можете сделать, - это опросить сервер.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top