From 5fd84a62b5e2b7a53f6978d330603287b5a3e048 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Wed, 13 Sep 2017 17:03:40 -0500 Subject: [PATCH] LogoutWebFilter supports anonymous users Fixes gh-4540 --- .../web/server/authentication/logout/LogoutWebFiter.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/webflux/src/main/java/org/springframework/security/web/server/authentication/logout/LogoutWebFiter.java b/webflux/src/main/java/org/springframework/security/web/server/authentication/logout/LogoutWebFiter.java index ecdce387b8..8be56c6073 100644 --- a/webflux/src/main/java/org/springframework/security/web/server/authentication/logout/LogoutWebFiter.java +++ b/webflux/src/main/java/org/springframework/security/web/server/authentication/logout/LogoutWebFiter.java @@ -47,7 +47,13 @@ public class LogoutWebFiter implements WebFilter { return this.requiresLogout.matches(exchange) .filter( result -> result.isMatch()) .switchIfEmpty(chain.filter(exchange).then(Mono.empty())) - .flatMap( result -> exchange.getPrincipal().cast(Authentication.class)) + .flatMap( result -> authentication(exchange)) .flatMap( authentication -> this.logoutHandler.logout(new WebFilterExchange(exchange, chain), authentication)); } + + private Mono authentication(ServerWebExchange exchange) { + return exchange.getPrincipal() + .cast(Authentication.class) + .defaultIfEmpty(this.anonymousAuthenticationToken); + } }