From 9cb361e88aade45aeb1030830777c6efd412b4c8 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Sat, 20 Dec 2008 23:25:29 +0000 Subject: [PATCH] SEC-745: Added LogoutSuccessHandler strategy for use in LogoutFilter. --- ...AuthenticationTargetUrlRequestHandler.java | 169 ++++++++++++++++++ .../security/ui/LogoutSuccessHandler.java | 29 +++ ...uestAwareAuthenticationSuccessHandler.java | 16 +- ...SimpleUrlAuthenticationFailureHandler.java | 2 +- ...SimpleUrlAuthenticationSuccessHandler.java | 103 +---------- .../security/ui/logout/LogoutFilter.java | 109 ++++------- .../logout/SimpleUrlLogoutSuccessHandler.java | 29 +++ ...HttpSecurityBeanDefinitionParserTests.java | 7 +- .../ui/logout/LogoutHandlerTests.java | 2 +- .../webapp/WEB-INF/classes/log4j.properties | 18 ++ .../InMemoryProviderWebAppTests.java | 8 +- 11 files changed, 304 insertions(+), 188 deletions(-) create mode 100644 core/src/main/java/org/springframework/security/ui/AbstractAuthenticationTargetUrlRequestHandler.java create mode 100644 core/src/main/java/org/springframework/security/ui/LogoutSuccessHandler.java create mode 100644 core/src/main/java/org/springframework/security/ui/logout/SimpleUrlLogoutSuccessHandler.java create mode 100644 itest/web/src/main/webapp/WEB-INF/classes/log4j.properties diff --git a/core/src/main/java/org/springframework/security/ui/AbstractAuthenticationTargetUrlRequestHandler.java b/core/src/main/java/org/springframework/security/ui/AbstractAuthenticationTargetUrlRequestHandler.java new file mode 100644 index 0000000000..0617440028 --- /dev/null +++ b/core/src/main/java/org/springframework/security/ui/AbstractAuthenticationTargetUrlRequestHandler.java @@ -0,0 +1,169 @@ +package org.springframework.security.ui; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.security.Authentication; +import org.springframework.security.ui.logout.LogoutHandler; +import org.springframework.security.util.RedirectUtils; +import org.springframework.security.util.UrlUtils; +import org.springframework.util.Assert; +import org.springframework.util.StringUtils; + +/** + * Base class containing the logic used by strategies which handle redirection to a URL and + * are passed an Authentication object as part of the contract. + * See {@link AuthenticationSuccessHandler} and {@link LogoutHandler}, for example. + *

+ * Uses the following logic sequence to determine how it should handle the forward/redirect + *