Как уничтожить куки при простое в Dancer (Perl) с помощью Dancer::Session::Cookie?
Есть ли встроенный способ уничтожить сессионный cookie, сгенерированный Dancer::Session::Cookie
после определенного количества минут простоя? Я заметил, что он даже не разрушает сессию, когда я перезагружаю сервер Nginx или Starman, а это не то, что я хочу (по соображениям безопасности).
Если нет встроенного способа, есть ли что-то по сути неправильно в сохранении последнего времени, когда сеанс был активен в базе данных SQL, и обновлении его после каждого действия? Затем, если прошло более 15 минут без обновления записи, cookie сессии будет уничтожен (с помощью session->destroy). Это не кажется лучшим решением, но, возможно, это единственный способ. Насколько я понимаю, вы также можете вручную установить срок действия cookie в заголовке HTTP, но это только уничтожит cookie на стороне клиента, верно?
1 ответ
Я думаю, что вы хотите сделать наоборот.
Когда вы создаете куки, используйте expires
атрибут для установки, скажем, "15 минут":
https://metacpan.org/pod/Dancer::Cookie
Затем каждый раз, когда вы что-то делаете для этого сеанса, вызывайте Dancer:: Cookie init
метод:
https://metacpan.org/pod/Dancer::Cookie
... чтобы обновить куки (если вы не используете путь по умолчанию, укажите путь).
Браузер пользователя должен истечь cookie для вас по истечении заданного времени.
(Я на самом деле не пробовал это, но код подразумевает, что он должен работать - документация для метода init, безусловно, может быть более ясной)