diff --git a/application/src/main/java/run/halo/app/security/authentication/login/UsernamePasswordAuthenticator.java b/application/src/main/java/run/halo/app/security/authentication/login/UsernamePasswordAuthenticator.java index 360072fb7..e825a5a7f 100644 --- a/application/src/main/java/run/halo/app/security/authentication/login/UsernamePasswordAuthenticator.java +++ b/application/src/main/java/run/halo/app/security/authentication/login/UsernamePasswordAuthenticator.java @@ -113,6 +113,10 @@ public class UsernamePasswordAuthenticator implements AdditionalWebFilter { return ignoringMediaTypeAll(MediaType.APPLICATION_JSON) .matches(webFilterExchange.getExchange()) .filter(ServerWebExchangeMatcher.MatchResult::isMatch) + .switchIfEmpty( + defaultHandler.onAuthenticationSuccess(webFilterExchange, authentication) + .then(Mono.empty()) + ) .flatMap(matchResult -> { var principal = authentication.getPrincipal(); if (principal instanceof CredentialsContainer credentialsContainer) { @@ -124,10 +128,7 @@ public class UsernamePasswordAuthenticator implements AdditionalWebFilter { .bodyValue(principal) .flatMap(serverResponse -> serverResponse.writeTo(webFilterExchange.getExchange(), context)); - }) - .switchIfEmpty( - defaultHandler.onAuthenticationSuccess(webFilterExchange, authentication) - ); + }); } }