У меня неприятная ошибка: откройте две вкладки со страницами входа и войдите с разными пользователями в каждую из них. Все запросы с первой вкладки, которые вошли в систему, возвращают «неавторизованную» ошибку. Frontend использует файл cookie SESSION, и похоже, что этот файл cookie перезаписывается вторым успешным входом во вторую вкладку, и он пытается использовать этот новый файл cookie при просмотре на первой вкладке.
Использование Spring Boot 1.5.8, Spring-session 2, AngularJS 1.7.2 Конфигурация очень стандартная, поэтому я не думаю, что эти шаблоны были бы полезны.
До сих пор я пытался настроить фильтр на бэкэнде, который работает перед аутентификацией, чтобы каким-то образом отфильтровывать запросы, которые знают cookie, но мне это не удалось.
UPD: Я ищу какой-то способ предотвратить эту ситуацию, когда пользователь вошел в систему, но с неправильным сеансом. Либо блокирование второй попытки входа в систему в этом браузере, либо удаление уже вошедшего в систему пользователя, когда другой входит в систему в том же браузере - все подойдет.
что ты хочешь?
@Rachmaninoff Я склоняюсь к предотвращению этого второго входа в систему от другого пользователя.
Если перед входом в систему открываются две вкладки, исправить это невозможно.
@Rachmaninoff да, это так. Но как другие обходят это стороной? Может быть, какое-то автоматическое обновление страницы входа в систему?
Вы хотите выйти из системы первым авторизованным пользователем?
Если это возможно, так и будет.


Вы можете выйти из системы с других вкладок, если вы установите какой-то токен в локальном хранилище, как в приведенном ниже коде (в ответе на успешный вход с сервера)
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);
}
});
Это нормальное и ожидаемое поведение. Если бы у вас не было такого поведения, вы бы теряли сеанс каждый раз, когда открываете ссылку на новой вкладке.