feat: Make addLogoutHandler() public in Webflux to allow for multi logout handlers like with Servlet.

Signed-off-by: Blake Bauman <blake_bauman@apple.com>
This commit is contained in:
blake_bauman 2025-06-27 01:44:21 -07:00
parent 00ead7f24d
commit 8fea725b8c
Failed to extract signature
1 changed files with 10 additions and 4 deletions

View File

@ -3022,14 +3022,15 @@ public class ServerHttpSecurity {
private final SecurityContextServerLogoutHandler DEFAULT_LOGOUT_HANDLER = new SecurityContextServerLogoutHandler(); private final SecurityContextServerLogoutHandler DEFAULT_LOGOUT_HANDLER = new SecurityContextServerLogoutHandler();
private List<ServerLogoutHandler> logoutHandlers = new ArrayList<>(Arrays.asList(this.DEFAULT_LOGOUT_HANDLER)); private List<ServerLogoutHandler> logoutHandlers = new ArrayList<>();
private LogoutSpec() { private LogoutSpec() {
} }
/** /**
* Configures the logout handler. Default is * Configures the logout handler. Default is
* {@code SecurityContextServerLogoutHandler} * {@code SecurityContextServerLogoutHandler}. This clears any previous handlers
* configured.
* @param logoutHandler * @param logoutHandler
* @return the {@link LogoutSpec} to configure * @return the {@link LogoutSpec} to configure
*/ */
@ -3039,7 +3040,12 @@ public class ServerHttpSecurity {
return addLogoutHandler(logoutHandler); return addLogoutHandler(logoutHandler);
} }
private LogoutSpec addLogoutHandler(ServerLogoutHandler logoutHandler) { /**
* Adds a logout handler in the last position.
* @param logoutHandler
* @return the {@link LogoutSpec} to configure
*/
public LogoutSpec addLogoutHandler(ServerLogoutHandler logoutHandler) {
Assert.notNull(logoutHandler, "logoutHandler cannot be null"); Assert.notNull(logoutHandler, "logoutHandler cannot be null");
this.logoutHandlers.add(logoutHandler); this.logoutHandlers.add(logoutHandler);
return this; return this;
@ -3088,7 +3094,7 @@ public class ServerHttpSecurity {
this.DEFAULT_LOGOUT_HANDLER.setSecurityContextRepository(securityContextRepository); this.DEFAULT_LOGOUT_HANDLER.setSecurityContextRepository(securityContextRepository);
} }
if (this.logoutHandlers.isEmpty()) { if (this.logoutHandlers.isEmpty()) {
return null; return DEFAULT_LOGOUT_HANDLER;
} }
if (this.logoutHandlers.size() == 1) { if (this.logoutHandlers.size() == 1) {
return this.logoutHandlers.get(0); return this.logoutHandlers.get(0);