본문 바로가기
Coding/Python

장고(Django) Restframework 인증 권한 설정 방법

by Hide­ 2018. 1. 10.
반응형

http://www.hides.kr/805 에 이어서 작성한다.

지난 포스팅에서는 Django의 Rest Framework를 사용해서 기본적인 Restful API를 만들었다.

오늘은 권한에 따라 이용할 수 있는 API기능을 제한하는 방법을 포스팅한다.

예를 들어 읽는 권한은 모든 유저에게 주어도 상관없지만

새로운 데이터를 추가, 수정 또는 삭제하는 권한은 관리자만 가능하도록 제한해야 한다.

Rest Framework에서는 이러한 인증 권한 설정도 쉽게 할 수 있다.

먼저 settings.py를 열고 아래의 코드를 추가한다.


REST_FRAMEWORK = {

    'DEFAULT_PERMISSION_CLASSES':(

        'rest_framework.permissions.IsAuthenticatedOrReadOnly',

    )

}


설정할 수 있는 권한은 다음과 같다.

- AllowAny

- IsAuthenticated

- IsAdminUser

- IsAuthenticatedOrReadOnly

(자세한 내용은 http://www.tomchristie.com/rest-framework-2-docs/api-guide/permissions 참고)


나는 허가받지 않은 사용자는 읽기 권한만 설정해주려고 IsAuthenticatedOrReadOnly 로 설정했다.

다음으로 views.py를 열고 상단에 아래의 코드를 추가한다.


from rest_framework.permissions import IsAuthenticatedOrReadOnly


그리고 미리 정의했던 class 내부에 아래의 코드를 추가한다.


permission_classes = (IsAuthenticatedOrReadOnly,)


이제 끝났다. 인증은 HTTP Basic Auth를 사용하는데 파이썬 requests 모듈에서는 다음과 같이 쉽게 사용할 수 있다.


r = requests.get(url, auth=('id', 'password'))


먼저 허가받지 않은 사용자 권한으로 새로운 데이터를 추가해본다.

(Authentication credentials were not provided 에러 발생)


틀린 아이디/패스워드로 해본다.

(Invalid username/password 에러 발생)


마지막으로 정상적인 id/pw로 auth하고 요청 시 성공적으로 글을 추가한다.