zoukankan      html  css  js  c++  java
  • 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里配置的权限类,最后用默认的权限类

  • 相关阅读:
    在 Java 中遍历 HashMap 的5种最佳方式
    Java 8 Stream.reduce() 使用示例
    Redis 为什么这么快?
    java8 常用代码
    为什么我们越娱乐反而会越无聊?
    Arrays.sort() VS Arrays.parallelSort()
    Java中枚举类型Enum的一种使用方式
    An illegal reflective access operation has occurred
    多线程中常见锁概述
    Java中创建多线程的三种方式
  • 原文地址:https://www.cnblogs.com/prodigal/p/10617539.html
Copyright © 2011-2022 走看看