1
0
mirror of synced 2026-08-05 01:36:56 +00:00

DelegatingServerAuthenticationSuccessHandler Executes Sequentially

Fixes gh-7728
This commit is contained in:
Rob Winch
2019-12-12 08:32:25 -06:00
parent 6db7b457b7
commit bd6ff1f319
2 changed files with 37 additions and 11 deletions
@@ -19,11 +19,11 @@ package org.springframework.security.web.server.authentication;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.server.WebFilterExchange;
import org.springframework.util.Assert;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
/**
* Delegates to a collection of {@link ServerAuthenticationSuccessHandler} implementations.
@@ -42,10 +42,8 @@ public class DelegatingServerAuthenticationSuccessHandler implements ServerAuthe
@Override
public Mono<Void> onAuthenticationSuccess(WebFilterExchange exchange,
Authentication authentication) {
List<Mono<Void>> results = new ArrayList<>();
for (ServerAuthenticationSuccessHandler delegate : delegates) {
results.add(delegate.onAuthenticationSuccess(exchange, authentication));
}
return Mono.when(results);
return Flux.fromIterable(this.delegates)
.concatMap(delegate -> delegate.onAuthenticationSuccess(exchange, authentication))
.then();
}
}