티스토리 뷰

이전에 JWT SECRET KEY를 분리하여 숨기는 (물론 github엔 settings.py자체가 올라가지 않았다) 과정을 했다.

이번에는 테스트를 위해 permission_classes([Allowany])로 버무려놓은 코드를 수정해보기로 했다.

 

Authentication이 로그인 여부 인증이라면

Permission은 Authorization, 즉 로그인한 사용자가 어디까지 서비스를 이용할 수 있는지에 대한 권한이다.

 

클래스 속성 또는 데코레이터를 통해 새 권한 클래스를 설정하면 settings.py 파일에 설정된 기본 목록을 무시하도록 뷰에 지시하는 것 입니다

 

기존 코드는 이렇게,  테스트를 원활하게 진행하기 위해 AllowAny로 설정했었다.

from rest_framework.decorators import permission_classes
from rest_framework.permissions import AllowAny

회원가입할때는 permission 을 AllowAny로 설정해주어야 한다. 

왜냐하면 회원가입 한다는 것은 미로그인 상태라는 것이기 때문에 미로그인상태에서도 접근이 가능해야 하기 때문이다.

그외에도 프로젝트의 메인페이지에 나오는 모든 영화 read기능, 영화 검색기능은 로그인 없이도 가능하게 설정한다.

 

표로 나누어보았다.

로그인 필요x 로그인 필요
@permission_classes([AllowAny])
@permission_classes([IsAuthenticated])
회원가입
로그인
메인페이지 영화 출력
영화 상세정보
영화 검색
프로필 마이페이지
영화 추천
영화 북마크
리뷰 리스트 가져오기 및 작성 -> 가져오기만 어떻게 분리하지?
특정 영화의 리뷰 보기 수정 및 삭제 -> 보기만 어떻게 분리하지?

문제는 REST_API 형식으로 if문으로 GET과 POST 방식을 나누고 하나로 구현한 view함수를 어떻게 처리할지였다.

리뷰 리스트 보기와 특정 영화의 리뷰 보기는 읽기 기능이라 로그인 안해도 볼 수 있도록 하고싶은데, 수정삭제와 view함수가 묶여있어서 어떻게 처리해야할지 난감했다.

 

공식문서를 찾아보았다.

와우, 이걸 사용하면 GET은 리드온리로, 그 외 CREATE, PUT, DELETE는 로그인 승인이 필요한 상태로 view함수를 데코레이팅 할 수 있을 것 같다!! 

 

변경된 표

로그인 필요 x  GET만 허용 로그인 필요
@permission_classes([AllowAny]) @permission_classes([IsAuthenticatedOrReadOnly]) @permission_classes([IsAuthenticated])
회원가입
로그인
메인페이지 영화 출력
영화 상세정보
영화 검색
프로필 마이페이지
리뷰리스트 보기
특정 영화의 리뷰 보기
팔로우 기능
영화 추천
영화 북마크
리뷰 작성, 수정 및 삭제

적용완료

댓글