Виртуальные потоки Spring Security и ThreadLocalJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Виртуальные потоки Spring Security и ThreadLocal

Сообщение Anonymous »

Когда я читал о виртуальных потоках и их подводных камнях, я нашел следующее упоминание:

Не кэшируйте дорогостоящие повторно используемые объекты в локальных переменных потока< /p>


Виртуальные потоки поддерживают локальные переменные потока точно так же, как и потоки платформы. Дополнительные сведения см. в разделе Локальные переменные потока. Обычно
локальные переменные потока используются для связи некоторой контекстно-зависимой
информации с текущим выполняющимся кодом, такой как текущая
транзакция и идентификатор пользователя. Такое использование локальных переменных
вполне разумно для виртуальных потоков. Однако рассмотрите возможность использования
более безопасных и эффективных значений области действия. Дополнительную
информацию см. в разделе «Ограниченные значения».

Здесь: https://docs.oracle.com/en/java/javase/21/ core/virtual-threads.html#GUID-68216B85-7B43-423E-91BA-11489B1ACA61
Но я также вспомнил, что Spring Security использует ThreadLocal для сохранения SecurityContext данного запроса:

По умолчанию SecurityContextHolder использует ThreadLocal для хранения этих
деталей, что означает, что SecurityContext всегда доступен
методам в том же потоке. , даже если SecurityContext
не передается явно в качестве аргумента этим методам. Использование
ThreadLocal таким образом вполне безопасно, если вы позаботитесь об очистке
потока после обработки запроса текущего принципала. Spring
FilterChainProxy Security гарантирует, что SecurityContext всегда
очищен.

Документация: https://docs.spring.io/ Spring-security/reference/servlet/authentication/architecture.html
Итак, вопрос в том, безопасно ли использовать виртуальные потоки в приложении Spring Boot REST с конечными точками, которые требуют аутентификации и авторизации. и поэтому у вас есть SecurityContext ? Считается ли это ловушкой?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/781 ... hreadlocal
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»