rest_framework學習(五)權限組件

權限組件

權限組件的目的是爲了控制用戶權限,實現不同權限訪問不同資源

 rest_framework運行的權限組件的時間和認證組件相同

上一篇博客rest_framework學習(四)認證組件已經提到了,不再贅述。

當執行了self.check_permissions(request)方法,即執行該視圖函數所有的權限組件

    def check_permissions(self, request):
        """
        Check if the request should be permitted.
        Raises an appropriate exception if the request is not permitted.
        """
        for permission in self.get_permissions():
            if not permission.has_permission(request, self):
                self.permission_denied(
                    request, message=getattr(permission, 'message', None)
                )

常用的rest_framework自帶的權限組件

  • AllowAny
  • IsAuthenticated
  • IsAdminUser
  • IsAuthenticatedOrReadOnly

自定義權限組件

實現自定義權限組件必須要繼承rest_framework.permissions.BasePermission

from rest_framework.permissions import BasePermission
class UserPermisson(BasePermission):
    message='您沒權限查看'
    def has_permission(self, request, view):
        user_type=request.user.user_type
        if user_type==2: # 如果用戶權限爲2,可以訪問
            return True
        else:
            return False

這裏需要注意,有兩種方法給函數添加權限功能:
第一種:

在對應函數下添加:

permission_classes = [MyAuth.UserPermisson,]
第二種:

在settings中全局配置:

REST_FRAMEWORK={

    'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.UserPermisson',]

}

配置之後所有的方法都需認證,當想局部禁用認證時,需在對應函數中添加下面這句

permission_classes = []

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章