kookmin-sw / capstone-2023-08

capstone-2023-08 created by GitHub Classroom
1 stars 4 forks source link

Permission setting #114

Closed wynter122 closed 1 year ago

wynter122 commented 1 year ago

Permission setting

제가 지금까지 구현한 View의 permission 범위 지정과, token 이 필요한 view 의 경우 user_id 를 payload 부터 얻어오는 PR 입니다.

View 별 authentication 정보는 #108 에 코멘트로 공유했습니다.

다른 View 들의 경우 input이 많이 달라지지 않았지만 다음 View 들에 대해서는 Input 이 달라졌으니 프론트단에서도 수정이 필요합니다.

무신사 옷 입어보기, 세부페이지 보기

-> 초기 회의시 모든 기능을 로그인이 된 상태임을 가정하기로 했으므로 로그인 후 발급받은 token 을 header에 포함해야 합니다.

찜하기, 찜 삭제하기, 찜목록

data에서 user_id 필드를 삭제하고, 로그인시 발급받은 token 을 header 에 포함해야합니다. @grapefruit224 께서는 찜 기능 관련 api 호출시 참고하여 주세요.

payload parser

제가 구현한 View 외에 @dh5473 님께서 구현하신 뷰에서도 payload 를 decode 하여 user_id 를 식별해야 하기 때문에, 해당 부분을 모듈화하여 project 수준의 utils.py 에 구현해두었습니다. 해당 함수 사용하시면 됩니다만, 코드 리뷰도 한 번 부탁드립니다.

회원가입시 토큰 미발행

이슈에서 @lucyya99 께서 회원가입시 토큰 발급이 필요가 없을 것 같다고 하셨고, 저또한 동의합니다. 따라서 회원가입 이후 토큰 발행은 하지 않고 있습니다. 다만, 대부분의 레퍼런스에서는 회원가입시에도 토큰을 발급하는 점이 걸리는데, 테스트 해 본 결과 회원가입시에 토큰을 발행하지 않아도 전혀 문제가 없는 것 같습니다. 혹시 이 부분에 대해 잘 아시는 팀원이 계시면 피드백 부탁드립니다.

dh5473 commented 1 year ago

from rest_framework_simplejwt.authentication import JWTAuthentication

@authentication_classes([JWTAuthentication]) def ~

혹시 데코레이터로 인증하고, 인증되면 request.user에 자동으로 해당 토큰의 유저 정보가 담긴다는데 확인해주실 수 있을까요? 안되면 지금 구현도 괜찮습니다!

회원 가입시 토큰 미발행

제 생각으로 발행하지 않는 것이 맞는 듯합니다. 회원가입과 로그인이 동시에 진행된다면 발행하는 것이 맞지만, 회원가입 후 id, pw를 다시 쳐서 로그인하는 경우에는 로그인할 때 발행해야 합니다. 현재 로그아웃 기능은 구현하지 않았는데, 원래 사용자가 로그아웃을 하면 저장소에서 refresh token을 삭제하여 사용이 불가능하게 하여야 한다고 합니다. 새로 로그인하면 서버에서 다시 재발급해서 DB에 저장하고요. 회원가입만 보면 로그인 상태는 아니니 (로그아웃 상태) token을 발행하지 않는 것이 보안상 맞는 듯 합니다.

wynter122 commented 1 year ago

돈혁님 말씀대로 데코레이터 사용하니 훨씬 깔끔하게 유저정보 얻을 수 있네요! image

레퍼런스 찾기 어려웠는데 감사합니다 ^^ 👍

wynter122 commented 1 year ago

@dh5473 님이 알려주신 방식으로 수정 완료했습니다! 한결 깔끔해진 것 같네요. 로컬에서 테스트는 완료되었습니다.