|
|
|
|
@ -25,56 +25,50 @@ import javax.servlet.http.HttpServletResponse;
@@ -25,56 +25,50 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import javax.servlet.http.HttpSession; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Performs a logout by modifying the |
|
|
|
|
* {@link org.springframework.security.context.SecurityContextHolder}. |
|
|
|
|
* |
|
|
|
|
* Performs a logout by modifying the {@link org.springframework.security.context.SecurityContextHolder}. |
|
|
|
|
* <p> |
|
|
|
|
* Will also invalidate the {@link HttpSession} if |
|
|
|
|
* {@link #isInvalidateHttpSession()} is <code>true</code> and the session is |
|
|
|
|
* not <code>null</code>. |
|
|
|
|
* Will also invalidate the {@link HttpSession} if {@link #isInvalidateHttpSession()} is <code>true</code> and the |
|
|
|
|
* session is not <code>null</code>. |
|
|
|
|
* |
|
|
|
|
* @author Ben Alex |
|
|
|
|
* @version $Id: SecurityContextLogoutHandler.java 1784 2007-02-24 21:00:24Z |
|
|
|
|
* luke_t $ |
|
|
|
|
* @version $Id$ |
|
|
|
|
*/ |
|
|
|
|
public class SecurityContextLogoutHandler implements LogoutHandler { |
|
|
|
|
// ~ Methods
|
|
|
|
|
// ========================================================================================================
|
|
|
|
|
//~ Methods ========================================================================================================
|
|
|
|
|
|
|
|
|
|
private boolean invalidateHttpSession = true; |
|
|
|
|
private boolean invalidateHttpSession = true; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Requires the request to be passed in. |
|
|
|
|
* |
|
|
|
|
* @param request from which to obtain a HTTP session (cannot be null) |
|
|
|
|
* @param response not used (can be <code>null</code>) |
|
|
|
|
* @param authentication not used (can be <code>null</code>) |
|
|
|
|
*/ |
|
|
|
|
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { |
|
|
|
|
Assert.notNull(request, "HttpServletRequest required"); |
|
|
|
|
if (invalidateHttpSession) { |
|
|
|
|
HttpSession session = request.getSession(false); |
|
|
|
|
if (session != null) { |
|
|
|
|
session.invalidate(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Requires the request to be passed in. |
|
|
|
|
* |
|
|
|
|
* @param request from which to obtain a HTTP session (cannot be null) |
|
|
|
|
* @param response not used (can be <code>null</code>) |
|
|
|
|
* @param authentication not used (can be <code>null</code>) |
|
|
|
|
*/ |
|
|
|
|
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { |
|
|
|
|
Assert.notNull(request, "HttpServletRequest required"); |
|
|
|
|
if (invalidateHttpSession) { |
|
|
|
|
HttpSession session = request.getSession(false); |
|
|
|
|
if (session != null) { |
|
|
|
|
session.invalidate(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
SecurityContextHolder.clearContext(); |
|
|
|
|
} |
|
|
|
|
SecurityContextHolder.clearContext(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public boolean isInvalidateHttpSession() { |
|
|
|
|
return invalidateHttpSession; |
|
|
|
|
} |
|
|
|
|
public boolean isInvalidateHttpSession() { |
|
|
|
|
return invalidateHttpSession; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Causes the {@link HttpSession} to be invalidated when this |
|
|
|
|
* {@link LogoutHandler} is invoked. Defaults to true. |
|
|
|
|
* |
|
|
|
|
* @param invalidateHttpSession true if you wish the session to be |
|
|
|
|
* invalidated (default) or false if it should not be |
|
|
|
|
*/ |
|
|
|
|
public void setInvalidateHttpSession(boolean invalidateHttpSession) { |
|
|
|
|
this.invalidateHttpSession = invalidateHttpSession; |
|
|
|
|
/** |
|
|
|
|
* Causes the {@link HttpSession} to be invalidated when this {@link LogoutHandler} is invoked. Defaults to true. |
|
|
|
|
* |
|
|
|
|
* @param invalidateHttpSession true if you wish the session to be invalidated (default) or false if it should |
|
|
|
|
* not be. |
|
|
|
|
*/ |
|
|
|
|
public void setInvalidateHttpSession(boolean invalidateHttpSession) { |
|
|
|
|
this.invalidateHttpSession = invalidateHttpSession; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|