Я новичок в Kotlin Coroutines и хочу вызвать API для каждого из моих сотрудников в асинхронном режиме. Но я столкнулся с проблемой, связанной с новой сопрограммой, я не могу получить аутентификацию от SecurityContextHolder.getContext
.
Кто-нибудь может объяснить, пожалуйста, почему SecurityContextHolder.getContext().authentication
становится равным null
внутри GlobalScope.async{...}
блока в Котлине? У новой сопрограммы есть отдельный контекст безопасности? И как мне решить эту проблему? Есть ли способ избежать передачи аутентификации от вызывающей функции perform()
к функции callApi()
?
Ниже вы можете найти фрагмент кода:
fun perform() {
// SecurityContextHolder.getContext().authentication contains some value!!!
val deferred = employeesRepository.getEmployees().map { callApi(it) }
runBlocking {
deferred.forEach { it.await() }
}
}
fun callApi(employee: EmployeeModel) = GlobalScope.async {
// SecurityContextHolder.getContext().authentication is null here!!!
}