|  | @@ -264,28 +264,40 @@ public abstract class AbstractRememberMeServices implements RememberMeServices,
 | 
	
		
			
				|  |  |      protected abstract UserDetails processAutoLoginCookie(String[] cookieTokens, HttpServletRequest request,
 | 
	
		
			
				|  |  |              HttpServletResponse response) throws RememberMeAuthenticationException, UsernameNotFoundException;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Sets a "cancel cookie" (with maxAge = 0) on the response to disable persistent logins.
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param request
 | 
	
		
			
				|  |  | +     * @param response
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  |      protected void cancelCookie(HttpServletRequest request, HttpServletResponse response) {
 | 
	
		
			
				|  |  |          logger.debug("Cancelling cookie");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        response.addCookie(makeCancelCookie(request));
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    protected Cookie makeCancelCookie(HttpServletRequest request) {
 | 
	
		
			
				|  |  |          Cookie cookie = new Cookie(cookieName, null);
 | 
	
		
			
				|  |  |          cookie.setMaxAge(0);
 | 
	
		
			
				|  |  |          cookie.setPath(StringUtils.hasLength(request.getContextPath()) ? request.getContextPath() : "/");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        return cookie;
 | 
	
		
			
				|  |  | +        response.addCookie(cookie);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    protected Cookie makeValidCookie(String value, HttpServletRequest request, int maxAge) {
 | 
	
		
			
				|  |  | -        Cookie cookie = new Cookie(cookieName, value);
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Sets the cookie on the response
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param tokens the tokens which will be encoded to make the cookie value.
 | 
	
		
			
				|  |  | +     * @param maxAge the value passed to {@link Cookie#setMaxAge(int)}
 | 
	
		
			
				|  |  | +     * @param request the request
 | 
	
		
			
				|  |  | +     * @param response the response to add the cookie to.
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    protected void setCookie(String[] tokens, int maxAge, HttpServletRequest request, HttpServletResponse response) {
 | 
	
		
			
				|  |  | +        String cookieValue = encodeCookie(tokens);
 | 
	
		
			
				|  |  | +        Cookie cookie = new Cookie(cookieName, cookieValue);
 | 
	
		
			
				|  |  |          cookie.setMaxAge(maxAge);
 | 
	
		
			
				|  |  |          cookie.setPath(StringUtils.hasLength(request.getContextPath()) ? request.getContextPath() : "/");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        return cookie;
 | 
	
		
			
				|  |  | +        response.addCookie(cookie);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Implementation of <tt>LogoutHandler</tt>. Default behaviour is to call <tt>cancelCookie()</tt>.
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  |      public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
 | 
	
		
			
				|  |  |          if (logger.isDebugEnabled()) {
 | 
	
		
			
				|  |  |              logger.debug( "Logout of user "
 |