RESTFULL 05 rest-framework权限组件

rest-framework之权限组件

一、权限介绍

​ 只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制

二、权限的使用

Ⅰ、写一个权限类
from rest_framework.permissions import BasePermission
class MyPermissions(BasePermission):
    def has_permission(self,request,view):
        #代表是超级用户
        if request.user.type ==1:
            #如何去除type对应的文字  get_字段名_display()
            user_str=request.user.get_type_display()
            print(user_str)
            #超级用户,校验通过,返回true,校验失败,返回false
            return True
        else:
            return False
Ⅱ、局部使用
在视图类中:
			permission_classes=[MyPermissions]
Ⅲ、全局使用
在setting中配置:
			'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.MyPermissions',],

三、源码学习

源码分析
APIView中的:check_permissions(self, request),进行的权限校验
配置错误信息的显示:message='错误提示'
def check_permissions(self, request):
    for permission in self.get_permissions():
        if not permission.has_permission(request, self):
            self.permission_denied(
                request, message=getattr(permission, 'message', None)
                )

self.get_permissions()

def get_permissions(self):
     return [permission() for permission in self.permission_classes]

四、使用顺序

权限类使用顺序:先用视图类中的权限类,再用settings里配置的权限类,最后用默认的权限类

posted @ 2019-03-28 20:43  搞事^o^Boy  阅读(154)  评论(0编辑  收藏  举报