개발자
JWT 를 사용하여 로그인 기능을 구현 하였습니다. 저같은 경우에는 로그인시 에세스토큰과 리플레시 토큰을 생성해서 사용중이 mysql 테이블에 저장을하고 토큰 두개를 반환하면 프론트(리엑트) 에서 세션 스토리지에 저장해서 에세스 토큰으로 통신하다가 만료가 되면 리플레시를 요청하고 리플레시를 보내서 데이터베이스에서 유효시간과 변형이 되지 않은것을 확인하면 다시 에세스 토큰을 발급하는 시스템으로 구현을 했는데요 이때 에세스 토큰은 30분 리플레시 토큰은 8시간을 주고 개발 하였습니다. 그런데 생각해보니 로그아웃을 구현 안했더라고요 프론트에서는 로그아웃하면 세션스토리지를 날려버리면 끝인데 RestAPI라 데이터만 주고 받으면 되는 형식이라 딱이 제가 받는게 없다는겨죠 그렇게 로그아웃을 찾아 보다가 다른분들은 Redis를 사용하여 리플레시 토큰을 입력받은 아이디를 key로 저장한후에 에세스를 발급하고 로그아웃하면 그토큰을 블랙리스트로 만들더군요 만료시간후에 자동 삭제되게 설정도 하는거 같아요 이게 어느 방향으로 개발하는게 맞는지 도통 모르겠습니다. 로그아웃 할때마다 리플레시를 무효화 시키고 로그인할 때 새로 생성해서 저장하는게 맞는지 로그아웃해도 데이터베이스에 리플레시 유효기간이 남아 있다면 그것을 계속 사용하는게 맞는건지 어느 글들을 보면 리플레시를 7일 한달도 주는 경우가 있더라구요... 그래서 잘 모르겠습니다. 로그인 -> 에세스,리플레시토큰 발급 -> 프론트 세션스토리지 저장 -> 에세스로 통신 -> 만료되면 리플레시 요청 -> 프론트에서 리플레시 통신 -> 데이터 베이스 확인후 유효검사후 에세스 다시 발급 -> 재로그인시 유효시간이 남으면 기존의 리플레시 토큰 사용 로그인 -> 에세스,리플레시토큰 발급 -> ........ -> 로그아웃시 Redis에 블랙리스트로 저장 -> 블랙리스트 접근불가 -> 다시로그인시 리플레시 새로발급 실무에서는 어떻게들 관리하시는지 알려주시면 감사하겠습니다.
답변 1
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!