From 6b8a778da886f90611f6abd8a6cd4bed197caa9e Mon Sep 17 00:00:00 2001 From: Dayan Kodippily Date: Sat, 7 Jan 2023 12:24:57 +1300 Subject: [PATCH] Rework determineTargetUrl for Readability Closes gh-12344 --- ...AuthenticationTargetUrlRequestHandler.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/web/src/main/java/org/springframework/security/web/authentication/AbstractAuthenticationTargetUrlRequestHandler.java b/web/src/main/java/org/springframework/security/web/authentication/AbstractAuthenticationTargetUrlRequestHandler.java index e33c41309b..dbf4f60a08 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/AbstractAuthenticationTargetUrlRequestHandler.java +++ b/web/src/main/java/org/springframework/security/web/authentication/AbstractAuthenticationTargetUrlRequestHandler.java @@ -107,31 +107,25 @@ public abstract class AbstractAuthenticationTargetUrlRequestHandler { if (isAlwaysUseDefaultTargetUrl()) { return this.defaultTargetUrl; } - // Check for the parameter and use that if available - String targetUrl = null; - if (this.targetUrlParameter != null) { - targetUrl = request.getParameter(this.targetUrlParameter); - if (StringUtils.hasText(targetUrl)) { - if (this.logger.isTraceEnabled()) { - this.logger.trace(LogMessage.format("Using url %s from request parameter %s", targetUrl, - this.targetUrlParameter)); - } - return targetUrl; - } + // with or without value the targetUrlParameter take precedence + if (StringUtils.hasText(this.targetUrlParameter) + && StringUtils.hasText(request.getParameter(this.targetUrlParameter))) { + trace("Using url %s from request parameter %s", request.getParameter(this.targetUrlParameter), + this.targetUrlParameter); + return request.getParameter(this.targetUrlParameter); } - if (this.useReferer && !StringUtils.hasLength(targetUrl)) { - targetUrl = request.getHeader("Referer"); - if (this.logger.isTraceEnabled()) { - this.logger.trace(LogMessage.format("Using url %s from Referer header", targetUrl)); - } + if (this.targetUrlParameter == null && this.useReferer) { + trace("Using url %s from Referer header", request.getHeader("Referer")); + return request.getHeader("Referer"); } - if (!StringUtils.hasText(targetUrl)) { - targetUrl = this.defaultTargetUrl; - if (this.logger.isTraceEnabled()) { - this.logger.trace(LogMessage.format("Using default url %s", targetUrl)); - } + trace("Using default url %s", this.defaultTargetUrl); + return this.defaultTargetUrl; + } + + private void trace(String msg, String... msgParts) { + if (this.logger.isTraceEnabled()) { + this.logger.trace(LogMessage.format(msg, msgParts)); } - return targetUrl; } /**