How to make request-bound data globally available in Ktor?Testing Post requests in KtorKtor: How to check authentication inside a route handler?How to pass data between various parts of the pipeline in Ktor (Kotlin)Get content of Ktor http requestHow to log requests in ktor http client?Spring Boot Kotlin Coroutine Caching of Http Callsktor client https request with self-signed certificateKtor: How can I validate JSON request?How do I correctly launch Kotlin coroutines to implement a Caffeine AsyncLoadingCache?Post request with an image using Ktor client
How would timezones work on a planet 100 times the size of our Earth
TEMPO: play a (mp3) sound in animated GIF/PDF/SVG
Can the ground attached to neutral fool a receptacle tester?
How can Radagast come across Gandalf and Thorin's company?
Plotting octahedron inside the sphere and sphere inside the cube
Is it okay for a ticket seller in the USA to refuse to give you your change, keep it for themselves and claim it's a tip?
Bitcoin successfully deducted on sender wallet but did not reach receiver wallet
how do companies get money from being listed publicly
How can I decide if my homebrew item should require attunement?
A continuous water "planet" ring around a star
How does "Te vas a cansar" mean "You're going to get tired"?
The cat ate your input again!
Why is the result of ('b'+'a'+ + 'a' + 'a').toLowerCase() 'banana'?
Boss wants me to ignore a software license
What ability do tools use?
Why is there a large performance impact when looping over an array over 240 elements?
What is an internal dimension/glue/muglue?
Simplification of numbers
How to remove ambiguity: "... lives in the city of H, the capital of the province of NS, WHERE the unemployment rate is ..."?
How to create events observer that only call when REST api dispatch events?
Is there a command to install basic applications on Ubuntu 16.04?
If a digital camera can be "hacked" in the ransomware sense, how best to protect it?
How does proof assistant organize knowledge?
On the Rømer experiments and the speed of light
How to make request-bound data globally available in Ktor?
Testing Post requests in KtorKtor: How to check authentication inside a route handler?How to pass data between various parts of the pipeline in Ktor (Kotlin)Get content of Ktor http requestHow to log requests in ktor http client?Spring Boot Kotlin Coroutine Caching of Http Callsktor client https request with self-signed certificateKtor: How can I validate JSON request?How do I correctly launch Kotlin coroutines to implement a Caffeine AsyncLoadingCache?Post request with an image using Ktor client
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm building a microservice in Ktor. While we are working within the application module, Ktor provides access to the call object which contains authorization data.
My problem is that I need to access the call object from a service-level class. In Spring, you would do this by accessing the SecurityContext which is globally available via a ThreadLocal. Ktor, being coroutine-driven, does not have that option.
Do I really need to pass down the call object through my service layer methods, or is there a way in Ktor to have some sort of "call context" object that you can access from anywhere?
kotlin kotlin-coroutines ktor
add a comment |
I'm building a microservice in Ktor. While we are working within the application module, Ktor provides access to the call object which contains authorization data.
My problem is that I need to access the call object from a service-level class. In Spring, you would do this by accessing the SecurityContext which is globally available via a ThreadLocal. Ktor, being coroutine-driven, does not have that option.
Do I really need to pass down the call object through my service layer methods, or is there a way in Ktor to have some sort of "call context" object that you can access from anywhere?
kotlin kotlin-coroutines ktor
It may be worth mentioning that coroutines do have aCoroutineContextwhich is basically just a map.
– Moira
Mar 27 at 9:32
The problem withCoroutineContextis that it is easy to lose it along the way (e.g. when callingasync). In all those places, the coroutine context must be passed along explicitly, which is easy to forget (the compiler won't complain). But I do agree, with some discipline, this is a solution.
– Alan47
May 23 at 8:32
add a comment |
I'm building a microservice in Ktor. While we are working within the application module, Ktor provides access to the call object which contains authorization data.
My problem is that I need to access the call object from a service-level class. In Spring, you would do this by accessing the SecurityContext which is globally available via a ThreadLocal. Ktor, being coroutine-driven, does not have that option.
Do I really need to pass down the call object through my service layer methods, or is there a way in Ktor to have some sort of "call context" object that you can access from anywhere?
kotlin kotlin-coroutines ktor
I'm building a microservice in Ktor. While we are working within the application module, Ktor provides access to the call object which contains authorization data.
My problem is that I need to access the call object from a service-level class. In Spring, you would do this by accessing the SecurityContext which is globally available via a ThreadLocal. Ktor, being coroutine-driven, does not have that option.
Do I really need to pass down the call object through my service layer methods, or is there a way in Ktor to have some sort of "call context" object that you can access from anywhere?
kotlin kotlin-coroutines ktor
kotlin kotlin-coroutines ktor
asked Mar 27 at 9:01
Alan47Alan47
2,1053 gold badges17 silver badges29 bronze badges
2,1053 gold badges17 silver badges29 bronze badges
It may be worth mentioning that coroutines do have aCoroutineContextwhich is basically just a map.
– Moira
Mar 27 at 9:32
The problem withCoroutineContextis that it is easy to lose it along the way (e.g. when callingasync). In all those places, the coroutine context must be passed along explicitly, which is easy to forget (the compiler won't complain). But I do agree, with some discipline, this is a solution.
– Alan47
May 23 at 8:32
add a comment |
It may be worth mentioning that coroutines do have aCoroutineContextwhich is basically just a map.
– Moira
Mar 27 at 9:32
The problem withCoroutineContextis that it is easy to lose it along the way (e.g. when callingasync). In all those places, the coroutine context must be passed along explicitly, which is easy to forget (the compiler won't complain). But I do agree, with some discipline, this is a solution.
– Alan47
May 23 at 8:32
It may be worth mentioning that coroutines do have a
CoroutineContext which is basically just a map.– Moira
Mar 27 at 9:32
It may be worth mentioning that coroutines do have a
CoroutineContext which is basically just a map.– Moira
Mar 27 at 9:32
The problem with
CoroutineContext is that it is easy to lose it along the way (e.g. when calling async). In all those places, the coroutine context must be passed along explicitly, which is easy to forget (the compiler won't complain). But I do agree, with some discipline, this is a solution.– Alan47
May 23 at 8:32
The problem with
CoroutineContext is that it is easy to lose it along the way (e.g. when calling async). In all those places, the coroutine context must be passed along explicitly, which is easy to forget (the compiler won't complain). But I do agree, with some discipline, this is a solution.– Alan47
May 23 at 8:32
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55373266%2fhow-to-make-request-bound-data-globally-available-in-ktor%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.
Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55373266%2fhow-to-make-request-bound-data-globally-available-in-ktor%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It may be worth mentioning that coroutines do have a
CoroutineContextwhich is basically just a map.– Moira
Mar 27 at 9:32
The problem with
CoroutineContextis that it is easy to lose it along the way (e.g. when callingasync). In all those places, the coroutine context must be passed along explicitly, which is easy to forget (the compiler won't complain). But I do agree, with some discipline, this is a solution.– Alan47
May 23 at 8:32