Spring Security: Как очистить cookie «запомнить меня» программно? - PullRequest
7 голосов
/ 07 июня 2011

Я использую метод выхода из системы в веб-приложении, как показано ниже, но если я отмечу remember me, выход из системы не работает, потому что cookie не очищается. Как программно очистить этот файл cookie в моем методе (или как улучшить метод выхода из системы)?

public void logout() {
    AnonymousAuthenticationToken anonymous = new AnonymousAuthenticationToken("anonymous", "anonymous", new ArrayList(Arrays.asList(new GrantedAuthorityImpl("ROLE_ANONYMOUS"))));
    SecurityContextHolder.getContext().setAuthentication(anonymous);
}

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

Если вы используете стандартное имя файла cookie Spring Security (SPRING_SECURITY_REMEMBER_ME_COOKIE), вы можете сделать это:

void cancelCookie(HttpServletRequest request, HttpServletResponse response)
{
  String cookieName = "SPRING_SECURITY_REMEMBER_ME_COOKIE";
  Cookie cookie = new Cookie(cookieName, null);
  cookie.setMaxAge(0);
  cookie.setPath(StringUtils.hasLength(request.getContextPath()) ? request.getContextPath() : "/");
  response.addCookie(cookie);
}

Вам придется изменить значение cookieName, если вы используете собственное имя файла cookie.

2 голосов
/ 16 января 2013

Класс AbstractRememberMeServices имеет реализацию LogoutHandler.logout, которая отменяет cookie.Введите LogoutHandler и вызовите этот метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...