본문 바로가기

Vue/Vue

로그아웃 1 (Springboot + Vue)

  1. Vue 에서 로그아웃 버튼을 누르면 userStore의 action으로 dispatch
  2. dispatch된 logout action에서 post : /api/logout으로 Springboot 요청
  3. Spring Security에 지정된 로그아웃 Url로 요청이 들어오면 아래 내용의 작업을 수행한다. (WebSecurityConfig)
  4. Springboot에서 logout-action으로 응답이 오면 userStore에 있는 state를 초기화 시키는 mutations를 실행
  5. 로그인 화면으로 되돌아간다.

 

(Vue) userStore의 state값을 하나하나 초기화 시켰다..

    mutations: {
        resetState: function (state){
            state.email = '';
            state.token = '';
            state.nickName = '';
            state.firstName = '';
            state.lastName = '';
            state.mid = '';
        }
     }

 

 

(Springboot) WebSecurityConfig

  logout()
    .logoutUrl("/api/logout")
    .logoutSuccessUrl("/")
    .logoutSuccessHandler(customLogoutSuccessHandler)
    .invalidateHttpSession(true).deleteCookies("cookie")
    .and()
    ...

 

  • logoutUrl(logoutUrl) : 로그아웃을 요청할 경로이고 기본값은 /logout이다. 사용자가 원하는 경로를 지정할 수 있으며 기본적으로 POST method로 요청할 수 있다
  • logoutSuccessUrl(logoutSuccessUrl) : 로그아웃이 처리된 후 이동될 경로이고 기본값은 /login?logout이다. 사용자가 임의로 지정할 수있다.
  • successHandlerRef(logoutSuccessHandler) : 로그아웃 후 처리될 내용을 담은 클래스를 지정할 수있다. Handler가 지정되면 logout-success-url 값으 무시된다.
  • invalidateSession(invalidateHttpSession) : 로그아웃 시 세션정보를 제거할 지 여부를 지정한다. 기본값은 TRUE이고 세션정보를 제거한다.
  • deleteCookies(deleteDookies) : 로그아웃 시 제거할 쿠키이름을 지정한다.

 

출처: https://baejangho.com/entry/Spring-Security-Logout

 

 

 


 

 

위 방법으로 임시 로그아웃을 구현했다. 

로그아웃을 해도 따로 토큰을 만료시키지 않는다. (jwt 토큰 특성상 한번 발급된 토큰은 만료시키기 힘들다고 한다)

따라서 로그아웃 처리시 아래의 작업을 수행하는 필터를 만들어야 한다.

  1.  토큰이 유효한지 확인 (토큰의 기간이 만료되지 않았는가?)
  2.  해당 토큰을 블랙리스트(DB)에 추가시킨다. (특정 토큰을 선택해서 만료시키기 힘들다고 한다)
  3.  블랙리스트(DB) 토큰의 유효기간이 지나면 삭제되게 한다.(event? 자동데이터 삭제?)

그리고 인증 절차에 블랙리스트에 등록된 토큰값인지 검사하는 부분을 만들어야 한다.

'Vue > Vue' 카테고리의 다른 글

로그아웃 3 (Springboot + Vue)  (0) 2022.01.25
로그아웃 2 (Springboot + Vue)  (0) 2022.01.23
조회수 중복 방지-cookie (Springboot + Vue)  (0) 2022.01.18
글 수정 & 삭제 2 (Springboot + Vue)  (0) 2022.01.15
글 수정 1 (springboot - vue)  (0) 2022.01.14