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
인증방식을 사용하고 있기 때문이다.