1. 程式人生 > >Django REST framework 許可權

Django REST framework 許可權

許可權Permissions

許可權控制可以限制使用者對於檢視的訪問和對於具體資料物件的訪問。

在執行檢視的dispatch()方法前,會先進行檢視訪問許可權的判斷
在通過get_object()獲取具體物件時,會進行物件訪問許可權的判斷
使用
可以在配置檔案中設定預設的許可權管理類,如

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

如果未指明,則採用如下預設配置

'DEFAULT_PERMISSION_CLASSES'
: ( 'rest_framework.permissions.AllowAny', )

也可以在具體的檢視中通過permission_classes屬性來設定,如

from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView

class ExampleView(APIView):
    permission_classes = (IsAuthenticated,)
    ...

提供的許可權
AllowAny 允許所有使用者
IsAuthenticated 僅通過認證的使用者
IsAdminUser 僅管理員使用者
IsAuthenticatedOrReadOnly 認證的使用者可以完全操作,否則只能get讀取
舉例

from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.generics import RetrieveAPIView

class BookDetailView(RetrieveAPIView):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer
    authentication_classes =
[SessionAuthentication] permission_classes = [IsAuthenticated]