Я асинхронно вызываю метод в Spring, используя @Async.Этот метод вызывает другой метод, помеченный @PreAuthorize, Spring Security Annotation. Чтобы авторизация MODE_INHERITABLETHREADLOCAL, мне нужно установить режим SecurityContextHolder в MODE_INHERITABLETHREADLOCAL, чтобы информация аутентификации передавалась асинхронному вызову. Пока все отлично работает.
Однако, когда я выхожу из системы и входю в систему как другой пользователь, в асинхронном методе SecurityContextHolder хранит информацию аутентификации старого пользователя, который вышел из системы. Это вызывает, конечно, нежелательное исключение AccessDenied. Нет такой проблемы с синхронными вызовами.
Я определил <task:executor id="executors" pool-size="10"/>, поэтому может быть проблема в том, что после инициализации потока в пуле исполнителей он не будет переопределять информацию аутентификации?