首页 > 其他分享 >DRF-频率限制

DRF-频率限制

时间:2022-12-01 18:33:40浏览次数:62  
标签:限制 用户 视图 访问 频率 权限 DRF

DRF之权限和频率限制

 一、权限

权限可以限制用户对视图的访问和对具体数据对象的访问。

  • 在执行视图的dispatch方法前,会先进行视图访问权限的判断
  • 在通过get_object获取对象时,会进行模型对象访问权限的判断

源码分析

核心源码——>APIView——>dispatch——>initial——>self.check_permissions(request)

权限使用

写一个类,继承BasePermission,重写has_permission,如果权限通过,就返回True,不通过就返回False。

 

 

 如何使用:

 

 

 内置权限

内置权限类

 

 

 如何使用

 

 

 

二、频率

可以用来减轻服务器压力,对接口访问的频率进行限制

内置频率限制

由于大部分需求使用内置的频率限制就已经可以了,所以主要看看内置的频率限制

限制未登录用户:AnonRateThrottle

也就是限制所有匿名未认证用户,使用IP区分用户。anon设置频次

限制登录用户:UserRateThrottle

需求:未登录用户1分钟访问5次,登录用户一分钟访问10次

对认证用户限制,使用User id 来区分,user 设置频次

但是这个有局限性,它只能是auth_user表,admin这套系统才能使用

IP频率限制:SimpledRateThrottle

限制用户对于每个视图的访问频率,使用IP限制

 

 

 

 

 

标签:限制,用户,视图,访问,频率,权限,DRF
From: https://www.cnblogs.com/fan-1994716/p/16942294.html

相关文章

  • DRF-筛选的高级用法
    高级使用实现模糊过滤,比如包含,大于,小于等等1.编写自己的过滤器类过滤器类和Django中表单类极其类似,写法基本一样,目的是指明过滤的时候使用哪些字段进行过滤,每个字段可以......
  • 怎么判断感性还是容性,谐振频率
    呈感性?容性?阻性?谐振频率一、感性?容性?阻性?(1)阻抗与感抗容抗的关系①输入阻抗公式 ②感抗-容抗有个别称为电抗,电抗与电阻满足一个直角三角形的关系。(2)呈现的性质1.阻......
  • drf 自定义返回数据格式
    参考:https://www.jianshu.com/p/c0be24752584原来的写法太繁琐,而且导致接口api界面没了,不是我想要的,就调整了如下修改permissions.pyfromrest_frameworkimportpermi......
  • drf--分页
    fromdjango.shortcutsimportrender,HttpResponsefromrest_framework.paginationimportPageNumberPaginationfromrest_framework.viewsimportAPIViewfromapp0......
  • 力扣 leetcode 895. 最大频率栈
    问题描述设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现FreqStack类:FreqStack()构造一个空的堆栈。voidpush(intval)将一......
  • DRF解析器使用方法和配置案例
    DjangoREST中的解析器用于解析传入HTTP请求的内容。在HTTP请求中以字符串格式接收数据。解析器将根据HTTP请求中收到的Content-Type标头将HTTP内容解析为pyth......
  • 「哈希表」最大频率栈(力扣第895题)
    本题为11月30日力扣每日一题题目来源:力扣第895题题目tag:哈希表题面题目描述设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现......
  • 亚马逊政策:2023 年向加州销售家电的新限制
    加州能源委员会(CEC)要求受监管的电器必须满足最低电器能效标准 并在现代化设备效率数据库系统(MAEDbS)中注册 提供准确的信息,包括品牌名称、制造商名称和型号。2023......
  • 最大频率栈
    题目设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现FreqStack 类:FreqStack() 构造一个空的堆栈。voidpush(intval) 将一个......
  • 895. 最大频率栈
    895.最大频率栈classFreqStack{Map<Integer,Stack<Integer>>stk;//k:出现次数,v:栈Map<Integer,Integer>cnt;//k:数,v:该数出现的个数int......