首页 > 编程语言 >权限组件及源码分析

权限组件及源码分析

时间:2024-04-21 22:15:08浏览次数:26  
标签:classes permission self request 源码 组件 权限 class

权限组件

​ 通过观察APIView的源码,会发现他的里面执行了三个方法

    self.perform_authentication(request) # 认证
    self.check_permissions(request)# 权限
    self.check_throttles(request)# 频率

​ 也由此看出,权限是在认证之后执行的

权限类的编写

  1. 写一个类,继承BasePermission
  2. 重写has_permission 方法
  3. 在其内部进行权限校验的定义
    • 有权限返回True
    • 无权限返回False
  4. 定制返回提示
    • 通过定义self.message = xxx
from rest_framework.permissions import BasePermission

class SuperPermission(BasePermission):
    # 继承BasePermission类
    # 重写has_permission方法
    # 拿到当前用户 ---》 查看权限 ---》如果权限足够 return True ---》 不够 return False
    def has_permission(self, request, view):
        user_type = request.user.user_type
        if user_type == '3':
            return True
        else:
            # 定制返回提示
            self.message = '权限不足'
            return False

权限类的使用

  1. 局部使用
  2. 全局使用
  3. 局部禁用
# 局部使用 
class BookView(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    authentication_classes = [CommonAuthentication]
    # 重写 permission_classes  列表里面填自己定义的权限类
     permission_classes = [SuperPermission]
        
# 全局使用
REST_FRAMEWORK = {
    # 权限
    'DEFAULT_PERMISSION_CLASSES': []
}

# 局部禁用
class BookView(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    authentication_classes = [CommonAuthentication]
    # 视图类里面定义空列表
     permission_classes = []

标签:classes,permission,self,request,源码,组件,权限,class
From: https://www.cnblogs.com/Hqqqq/p/18149596

相关文章

  • 频率组件及源码分析
    频率组件​ 他的作用是限制接口访问的频率频率类的编写写一个类,继承SimpleRateThrottle重写get_cache_key,返回唯一标识,返回什么就以什么做限制重写类属性rate控制频率fromrest_framework.throttlingimportBaseThrottle,SimpleRateThrottleclassCommonThrottling(S......
  • DRF之路由组件
    一、路由的写法1、原始写法(1)介绍是指手动编写路由规则的方式。使用path()函数或re_path()函数来定义路由规则,并将其与对应的视图函数或类关联起来。(2)示例假设有一个名为book的应用,它包含了一个处理图书列表的视图函数book_list,以及一个处理单个图书详情的视图函数book_de......
  • 全局异常捕获及源码分析
    全局异常捕获​ drf只会捕获属于drf的异常,所以要做到全局异常捕获,还需要手动操作一下。​ 经过对drf异常处理组件的源码分析之后可以得知,其实就是自己定义一个exception_handler函数,然后全局替换一下即可​ 首先要知道,虽然是自己写一个exception_handler函数,但是drf的exception......
  • 分页组件
    分页组件​ 查询所有,才有分页功能(例如网站的下一页功能,app下挂加载更多)PageNumberPagination基本分页重要类属性page_size=api_settings.PAGE_SIZE(每页显示条数)page_query_param='page'(查询时用的参数)page_size_query_param=None(更改返回条数)max_page_size=......
  • 视图组件
    两个视图基类APIView#APIView是rest-framwork提供的所有视图类的基类,它继承自django的View类#在APIView中仍然以常规的类视图定义方法来实现get()、post()...请求方式的方法APIView和View的区别传入到视图方法中的请求对象是rest-framwork的Reqeust类的对象,而不是djang......
  • 路由组件
    Routers​ 对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系,还可以使用Routers类来快速实现路由的创建SimpleRouter(常用)DefaultRouter(用的少)#方式一#1.导入Routers类fromrest_framework.routersimportDefaultRouter#2.实例化对......
  • Django之settings源码分析
    引入查看源码的前提刚开始阅读一些库的源码的时候,最好选一些代码量少的先感受一下看到看不懂的,没有必要去死磕,挑一些看得懂的,再结合网上的一些文献一.django的两个配置文件一个是暴露给用户可以自己自定义的配置文件也就是项目根目录下的settings.py一个是项目默认的配......
  • 在React中的函数组件和类组件——附带示例的对比
    在React中,创建组件有两种主要方式:函数组件和类组件。每种方式都有自己的语法和用例,尽管随着ReactHooks的引入,它们之间的差距已经显著缩小。但选择适当的组件类型对于构建高效和可维护的React应用程序仍然非常关键。在本文中,我们将探讨函数和类组件之间的基本区别,清楚地理解它们......
  • 计算机毕业设计源码-基于 SpringBoot 开发的班级综合测评系统研究与实现
    技术栈开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器3.需求分析用户需求分析根据账号登陆进入班级综合测评管理系统,系统根据角色展示相应......
  • 从源码入手详解ReentrantLock,一个比synchronized更强大的可重入锁
    写在开头随手一翻,发现对于Java中并发多线程的学习已经发布了十几篇博客了,多线程是Java基础中的重中之重!因此,可能还需要十几篇博客才能大致的讲完这部分的知识点,初学者对于这部分内容一定要多花心思,不可马虎!今天我们继续来学习一个重要知识点:ReentrantLockReentrantLock:是一种......