#spring #spring-boot #spring-security #spring-restcontroller #security-context
#весна #весенняя загрузка #spring-безопасность #spring-restcontroller #безопасность-контекст
Вопрос:
Согласно WebAsyncManager
документации,
Асинхронный сценарий начинается с обычной обработки запроса в потоке (T1). Параллельная обработка запросов может быть инициирована вызовом startCallableProcessing или startDeferredResultProcessing, оба из которых выдают результат в отдельном потоке (T2). Результат сохраняется, и запрос отправляется в контейнер, чтобы возобновить обработку с сохраненным результатом в третьем потоке (T3). В отправленном потоке (T3) доступ к сохраненному результату можно получить через getConcurrentResult() или определить его наличие с помощью hasConcurrentResult().
Spring SecurityContext
доступен в T1 и T2, но не в T3. Мне нужен SecurityContext
в T3 при сериализации ответа (это особое требование). Я могу исправить это, установив spring.security.filter.dispatcher-types=REQUEST,ERROR,ASYNC
, но это приводит к тому, что весь мой FilterChain
запуск дважды, чего я пытаюсь избежать.
Есть ли способ получить SecurityContext
в T3 без повторного запуска FilterChain
?
Комментарии:
1. Не могли бы вы указать свой текущий код, конфигурацию и т.д.? без этого будет довольно сложно предоставить вам варианты
2. Вы читали baeldung.com/spring-mvc-async-security ?