회원계정 삭제 시 미디어 폴더에 프로필 사진이 있다면 같이 삭제하는 방법
jwt 토큰 인증 방식에선 서버에서 로그아웃 시킬 수 없고
DB에 access 토큰을 저장해놓고 매번 로그아웃한 토큰인지 아닌지 확인하는 방식으로 할 수 있지만 방법 복잡
그리고 db에 저장하고 매 요청마다 확인을 하면 stateless한 jwt를 쓰는 의미가 없을 것 같다.
https://okky.kr/questions/870084
그래서 이것 저것 찾아보다가 두가지 방식을 더 발견했다.
1. 백엔드에선 access 토큰 주기를 짧게 설정. 로그아웃 X / 프론트엔드에서 로그아웃 버튼 클릭 시 localstorage의 access token을 삭제
2. access 토큰 주기 짧게 & 로그아웃 시 blacklist 패키지로 refresh 토큰 못쓰게 해버림
일단 그냥 장고의 logout()만 써도 login_required 데코레이터나 is_authenticated로 로그인/로그아웃을 구별할 수 있을 것 같다.
logout()과 함께 reponse.delete_cookie("jwt")/reponse.delete_cookie("refreshtoken")/request.user.auth_token.delete()를 쓰는 포스팅도 봤는데 localstorage에서 delete 됐는지 어쨌는지 모르겠지만 어쨌든 한번 발행된 access 토큰은 만료될때까지 계속 유효하다.
강의에서는 mockView로 포스트맨에서 로그인 상태인지 확인했었는데 access 토큰이 아직 유효하지만 로그아웃한 경우는 강의 방식으로 로그인/로그아웃 여부를 확인할 수 없다.
일단 포스트맨에서 delete 요청으로 로그아웃 성공!! 메시지가 뜨는건 확인했으니 이제 그만 찾아보고 나머지 과제를 일단 먼저 해결한 후 blacklist 패키지를 공부해봐야겠다.
+ 장고 기초 개인 과제 해설 영상에서 로그아웃 부분만 다시 찾아봤었는데 포스트맨으로 로그인여부 확인하는 부분이 있었는지 다시 봐봐야겠다.
로그아웃 관련 링크들
https://medium.com/geekculture/register-login-and-logout-users-in-django-rest-framework-51486390c29
https://nalara12200.tistory.com/175 ---> 이 방법도 좋아 보인다.
https://hyeo-noo.tistory.com/302
Django REST Framework 문서에서:
To logout, call the logout method as usual.
# Log out
client.logout()
https://velog.io/@masterkorea01/Django-JWT-Logout
*****************************
제일 먼저 해보고 싶은 것
*****************************
https://gist.github.com/orehush/667c79b28fdc94f86746bd15694d1167
'TIL' 카테고리의 다른 글
TIL 050223 (0) | 2023.05.02 |
---|---|
TIL 050123 (0) | 2023.05.01 |
TIL 042723 (0) | 2023.04.27 |
TIL 042623 (0) | 2023.04.26 |
TIL 042523 (0) | 2023.04.25 |