복붙노트

[SPRING] 스프링 보안 : 'remember me'쿠키를 프로그래밍 방식으로 지우는 법?

SPRING

스프링 보안 : 'remember me'쿠키를 프로그래밍 방식으로 지우는 법?

아래처럼 web-app에서 logout 메서드를 사용하고 있습니다. 그러나 쿠키가 지워지지 않아 로그 아웃이 작동하지 않습니다. 방법으로이 쿠키를 프로그래밍 방식으로 제거하는 방법 (또는 더 나은 로그 아웃 방법을 만드는 방법)

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

해결법

  1. ==============================

    1.표준 스프링 보안 쿠키 이름 (SPRING_SECURITY_REMEMBER_ME_COOKIE)을 사용하는 경우 다음과 같이 할 수 있습니다.

    표준 스프링 보안 쿠키 이름 (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 값을 변경해야합니다.

  2. ==============================

    2.AbstractRememberMeServices 클래스에는 쿠키를 취소하는 LogoutHandler.logout 구현이 있습니다. LogoutHandler를 주입하고이 메소드를 호출하십시오.

    AbstractRememberMeServices 클래스에는 쿠키를 취소하는 LogoutHandler.logout 구현이 있습니다. LogoutHandler를 주입하고이 메소드를 호출하십시오.

  3. from https://stackoverflow.com/questions/6265490/spring-security-how-to-clear-remember-me-cookie-programmatically by cc-by-sa and MIT license