인프런 커뮤니티 질문&답변

ykmykm4608님의 프로필 이미지
ykmykm4608

작성한 질문수

스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션

시큐리티 JWT 코드 리뷰 및 개념잡기

로그아웃은 Redis를 사용해야하는 건가요?

작성

·

1.1K

0

로그인시 Redis에도 정보를 담아서 로그아웃시에 제거 하는 방식으로 가야 하려나요?

답변 1

0

최주호님의 프로필 이미지
최주호
지식공유자

JWT AccessToken만 사용할 경우, 로그아웃은 서버측에서 해줄 일이 없습니다. 프론트에서 토큰을 삭제하는 것이 로그아웃입니다.

 

RefreshToken을 함께 사용할 경우에는, Redis에 정보를 담고, 제거하고 프론트에서도 제거해야합니다.

서버측에서 정보를 날린다고 해도 다이렉트로 로그아웃은 되지 않습니다. AccessToken 유효기간동안은 로그인 된 상태가 됩니다.

ykmykm4608님의 프로필 이미지
ykmykm4608
질문자

혹시 현재 accessToken, refreshtoken도 발급을 안하고 응답헤더에 토큰만 저장하는 방식인 현재로썬 로그아웃은 어떻게 진행하면 되려나요?

 

현재 강의에서 페이지이동시 헤더에 토큰이 존재할경우 시큐리티 컨텍스트 홀더에 강제로 userdetail 객체를 생성하고 저장하고 인증체크, 권한체크 용으로 사용하는데
로그아웃은 현재 상태로썬 방법이 있으려나요?

ykmykm4608님의 프로필 이미지
ykmykm4608
질문자

아 검색해보니 현재 강의 기준만으론

jwt 토큰은 브라우저의 헤더에 저장되어있기 떄문에 삭제를 할순 없고 아래 코드와같이 jwtvo가 설정 되어 있어서 시간 만료만을 기다려야 되는군여

 

public static final int EXPIRATION_TIME = 1000*60*60*24*7; //만료시간 일주일

accesstoken과 refreshtoken을 사용을 할경우엔

redis를 사용하여 로그인시 refresh token을 저장하고 로그아웃시

redis에 저장된 refresh token을 제거하거나 OR refresh token을 제거도 하고 redis에 accestoken을 저장하여 로그인 검증시 redis에 accesstoken +만료시간 이 저장하여 검증시에 accesstoken이 저장되어있으면 로그아웃 사용자로 판별하게끔 하는경우도 있겠군요

 

=====

accestoken이란게 현재 강의에서 사용자의 헤더에 저장해주는 토큰하고 accesstoken은 다른 거일까요,,?

ykmykm4608님의 프로필 이미지
ykmykm4608

작성한 질문수

질문하기