Задать вопрос
cot_shaurma
@cot_shaurma
Java и всего понемногу

Как очистить localStorage после закрытия всех вкладок с сайтом?

Хочу реализовать функциональность "Запомнить меня" с использованием JWT.

План такой: JWT записывается в localStorage, и если пользователь не поставил галку "Запомнить меня", то после закрытия всех вкладок сайта localStorage затирает запись с токеном. Как я могу такое реализовать?
  • Вопрос задан
  • 1283 просмотра
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
Так это нужен session а не local, это у него такое поведение
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Каждые 5 секунд обновляйте авторизационные даненые в хранилище, а все записи старше 15 секунд считаете недействительными. Соответственно, если пользователь закрыл все вкладки, то авторизационные данные перестали обновляться и быстро устарели.

P. S. Это лишь один из способов. Также вы можете использовать sessionStorage.
Ответ написан
Комментировать
@rPman
100% гарантии локальными средствами не получишь, onbeforeunload может не исполниться по разным хоть и редким причинам (например убили процесс, или проблема с интернетом, или неудачное стечение обстоятельств при пробуждении ото сна, особенно это актуально для мобильных браузеров), поэтому ключевой вопрос задачи - обнаружить закрытие вкладок, что можно сделать только на серверной стороне, удерживая websocket подключение (сервер считает сколько открыто к какому пользователю подключений и на дисконнекте последнего помечает что сессия закончилась).

В этом случае очистку localstorage придется делать и на открытии страницы, если сервер пометил для себя что сессия была закрыта и устарела
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы