Запретить совместное использование сеансов между вкладками браузера - PullRequest
0 голосов
/ 26 ноября 2018

У меня неприятная ошибка: откройте две вкладки со страницами входа и войдите с разными пользователями в каждой.Все запросы из первой вкладки, которые вошли в систему, возвращаются с «несанкционированной» ошибкой.Frontend использует файл cookie SESSION, и, похоже, этот файл cookie перезаписывается при втором успешном входе во вторую вкладку, и он пытается использовать этот новый файл cookie при просмотре на первой вкладке.

Использование Spring Boot 1.5.8, Spring-Сессия 2, AngularJS 1.7.2 Конфигурация очень стандартная, поэтому я не думаю, что эти шаблоны были бы полезны.

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

UPD: я ищу способ предотвратить ситуацию, когда пользователь вошел в систему, но с неправильным сеансом.Либо блокирование второй попытки входа в систему в этом браузере, либо нажатие на пользователя, уже вошедшего в систему, когда другой пользователь входит в систему в том же самом броузере - все подойдет.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете выйти из системы на других вкладках, если вы установите какой-либо токен в локальном хранилище, как показано ниже (в успешном ответе на вход с сервера)

 localStorage.setItem('logout', 'logout-' + Math.random());

и у вас есть эта функция в качестве блока запускав вашем главном модуле приложения:

 function logoutFromOtherTabs(authService, $timeout) {
        'ngInject';

        window.addEventListener('storage', function (event) {
            if (event.key === 'logout') {
                $timeout(function () {
                    authService.logout();
                }, 1000);
            }
        });
...