Строю микросервис в Кторе. Пока мы работаем в модуле приложения, Ktor предоставляет доступ к объекту call
, который содержит данные авторизации.
Моя проблема в том, что мне нужно получить доступ к объекту call
из класса уровня обслуживания. В Spring вы могли бы сделать это, обратившись к SecurityContext
, который глобально доступен через ThreadLocal
. Ktor, управляемый сопрограммами, не имеет такой возможности.
Действительно ли мне нужно передавать объект call
через мои методы уровня обслуживания, или в Ktor есть способ иметь какой-то объект «контекста вызова», к которому вы можете получить доступ откуда угодно?
CoroutineContext
, который представляет собой просто карту. - person Moira   schedule 27.03.2019CoroutineContext
в том, что его легко потерять по пути (например, при вызовеasync
). Во всех этих местах контекст сопрограммы должен передаваться явно, о чем легко забыть (компилятор не будет жаловаться). Но я согласен с некоторой дисциплиной, это решение. - person Alan47   schedule 23.05.2019