хранение сеансов в проекте angular - PullRequest
0 голосов
/ 05 августа 2020

в моем проекте angular 9 пользователь, который не выбирает «запомнить меня», я сохранил его токен входа и детали в sessionStorage. а информация о пользователе, который выбирает, чтобы его запомнили, хранится в localstorage.

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

как go хотя эта проблема, сохранение данных для любого из пользователей .. запомнил / не запомнил. чтобы пользователь мог открывать и другие вкладки.

1 Ответ

1 голос
/ 05 августа 2020

Это на самом деле предполагаемое и стандартное поведение sessionStorage. Новая вкладка считается вторым «сеансом» и, следовательно, не будет иметь доступа ни к чему, хранящемуся в другом сеансе / вкладке.

Из документов:

  • Сеанс страницы длится, пока открыт браузер, и сохраняется после перезагрузки и восстановления страницы.

  • Открытие страницы в новой вкладке или окне создает новый сеанс со значением контекст просмотра верхнего уровня, который отличается от того, как работают файлы cookie сеанса.

  • Открытие нескольких вкладок / windows с одним и тем же URL-адресом создает sessionStorage для каждой вкладки / окна.

  • Закрытие вкладки / окна завершает сеанс и очищает объекты в sessionStorage.

Следовательно, sessionStorage - это не то, что вам здесь нужно. Лучше использовать localStorage и removeItem().

...