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하고 요청 시 성공적으로 글을 추가한다.
'Coding > Python' 카테고리의 다른 글
Django 외래키(Foreign key) 생성 방법/관련 이슈 (2) | 2018.02.05 |
---|---|
Python3 requests SSL 오류 해결 방법 (0) | 2018.02.03 |
장고(Django) Restframework로 REST API 만드는 방법 (0) | 2018.01.09 |
빗썸(Bithumb) API 사용하는법 (0) | 2018.01.05 |
Python Blind Sql Injection Tool with Multiprocessing (0) | 2017.12.24 |