McSim
McSim

Reputation: 1

Transfer value in WebFlux session during redirect

I am using WebFlux. In the controller

@PostMapping("login-initiation/{registrationId}")
    public Mono<ResponseEntity<Void>> loginInitiation(@PathVariable String registrationId, ServerWebExchange exchange) {

I calculate the value of

LoginInitiationRequest loginInitiationRequest.

Then, I perform a redirect to the standard endpoint to create a request to the OAuth2 Authorization Server in a custom method of a class that implements ServerOAuth2AuthorizationRequestResolver.

exchange.getAttributes().put("loginInitiationRequest", loginInitiationRequest);

        return Mono.just(ResponseEntity.status(HttpStatus.FOUND)
                .location(URI.create("/oauth2/authorization/" + registrationId))
                .build());

How can I transfer the loginInitiationRequest value from the controller to the method

in another class during the redirect?

I tried using:

exchange.getAttributes().put("loginInitiationRequest", loginInitiationRequest);

But after the redirect, in the method:

 private Mono<OAuth2AuthorizationRequest> customizeRequest(ServerWebExchange exchange, OAuth2AuthorizationRequest originalRequest) {
        return exchange.getSession()
                .flatMap(session -> {
                    LoginInitiationRequest loginInitiationRequest = (LoginInitiationRequest) session.getAttribute("loginInitiationRequest");

the list of session's arguments is empty and as result loginInitiationRequest = null.

Upvotes: 0

Views: 35

Answers (0)

Related Questions