django rest framework에는
permissions 이라는 권한 관리 기능을 제공하는 라이브러리가 있다.
간단하게 말하자면 POST 등 서버로 요청을 보낼 때,
권한을 요구하게 만들어준다!
사용법은 간단하다.
from rest_framework import permissions
...
class PermissionView(APIView):
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
...
이렇게 사용할 뷰 사이에 permission_classes을 넣어주면 된다.
permissions. 옆에 붙는 것은 권한 설정 옵션이다.
AllowAny: 모든 권한을 허용.
IsAuthenticated: 인증 된 유저만 통과
IsAdminUser: admin 유저만 통과
IsAuthenticatedOrReadOnly: 인증 된 유저를 제외하면ReadOnly
이렇게 권한을 설정해주면,
요청을 보낼때 headers에 Authorization을 실어 보내줘야 한다.
대표적으로, IsAuthenticated를 많이 사용하는데
js에서 예를 보자면
const response = await fetch(`${BACK_BASE_URL}/suggest/`, {
headers: {
Authorization: `Bearer ${token}`,
"content-type": "application/json",
},
method: "POST",
body: JSON.stringify(data),
});
이런식으로 헤더에 권한에 필요한 것들을 담아준다.
Authorization는 인증에 대한 정보를 전달하는 key값이다.
Bearer는 토큰의 유형을 말한다.
옆에 붙은 token은 jwt 인증방식을 사용하고 있기 때문이다.