• Django rest-framework框架-用户权限实例


    简单实例:

    class MyPermission(object):
          '''
        权限控制类
       '''
          def has_permission(self,request,view):
              if request.user.user_type !=3:
                  return False
              return True
    
    
    class MyPermission1(object):
          '''
        权限控制类
       '''
    message = "必须是SVPI才能访问!" def has_permission(self, request, view): if request.user.user_type == 3: return False return True ORDER_DICT = { 1:{ 'name': 'x', 'age': 18, 'gender':'y', 'content': '...' }, 2:{ 'name': 'z', 'age': 18, 'gender': 'h', 'content': '...' } } class OrderView(APIView): # 权限控制 按需添加 permission_classes = [MyPermission,] def get(self,request,*args,**kwargs): ret = {'code':1000,'msg':None,'data':None} try: ret['data'] = ORDER_DICT except Exception as e: pass return JsonResponse(ret) class UserInfoView(APIView): """ 订单相关业务(普通用户,VIP) """ # 权限控制 按需添加 permission_classes = [MyPermission1, ] def get(self,request,*args,**kwargs): return HttpResponse('用户信息')

      

    如果没有配置:

    permission_classes = [MyPermission,]
    
    # 如果没有设置以上内容  默认源码会去 settings里面找
    permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES

    #全局设置
    REST_FRAMEWORK = {
      "DEFAULT_PERMISSION_CLASSES": "api.utils.permission.Mypermission",
    }

      

    源码流程:

    1--------
    dispatch
    2--------
    initail
    3--------
    has_permission
    

      

    改进版:

    继承内置权限类:

    from rest_framework.permissions import BasePermission
    class MyPermission(BasePermission):
          '''
        权限控制类
       '''
          def has_permission(self,request,view):
              if request.user.user_type !=3:
                  return False
              return True

      

    1.必须继承 BasePermission类

    2.必须实现has_permission方法

  • 相关阅读:
    禁止使用U盘和移动硬盘
    Linux下Red5安装和配置
    ORACLE 10g下载地址
    常挂在美国人嘴边的最酷口语
    关于oracle中spfile和pfile的一个实验
    nginx搭建流媒体服务器
    powerDesigner 把name项添加到注释(comment),完美方案!
    memcached全面剖析–PDF总结篇
    PD 导出SQL语句
    本地读取虚拟机系统中的资源
  • 原文地址:https://www.cnblogs.com/kuku0223/p/11340949.html
Copyright © 2020-2023  润新知