Могу ли я использовать локальное хранилище html5 для хранения информации о сеансе аутентификации пользователя
БЫСТРЫЙ ПРЕДПОСЫЛКИ:
Я пишу программу Mongo/Express/ Angular/Node и используя паспорт, у меня есть параметры входа в OAuth для обработки аутентификации пользователя/авторизации.
С паспортом я успешно поддерживаю сеанс на сервере, поэтому все мои запросы XHR (которые в этом нуждаются) проверяют зарегистрированного пользователя.
В журнале на сервере помещается основная информация о сеансе пользователя в файл cookie, который клиент может найти в обратном вызове авторизации, затем я использую angular -cookies '$ CookieStore для доступа к этому файлу cookie на клиенте, сохраняя его на корнеплоды и очистить печенье.
ПРОБЛЕМА:
Это отлично работает, за исключением любого события, когда пользователь обновляет браузер, что заставляет мою сессию kernelcope явно протираться.
Итак, я рассматривал возможность хранения информации о сеансе в локальном хранилище браузера (используя store.js), а затем даже при начальной загрузке я мог проверить сеанс, существующий в локальном хранилище браузера, и обойти логин OAuth, если уже был сеанс,
Является ли это плохой практикой или существуют некоторые проблемы с логистикой/безопасностью при сохранении информации о сеансе пользователя в локальном хранилище браузера?
В этом приложении нет данных senstive, регистрация бесплатна, и вход в систему действительно существует, поэтому я могу отслеживать пользователей и хранить данные, созданные в приложении для каждого пользователя. И пользовательский сеанс никогда не будет иметь пароль (я разрешу только для входа в OAuth локальный вариант).
Ответы
Ответ 1
Вместо localStorage
просмотрите объект sessionStorage
: http://www.w3schools.com/html/html5_webstorage.asp
Он работает точно так же, как localStorage
, но весь объект sessionStorage
будет удален, когда окно браузера будет закрыто, но сохранится при обновлении любой страницы. Это идеальное место для хранения идентификаторов сеанса и т.д.
Но следует помнить, что sessionStorage
изолирован на вкладке браузера - это означает, что если ваш пользователь хочет открыть ссылку на новой вкладке, sessionStorage
для этого будет инициализирован пустым.