DRF的认证,频率,权限
2024-08-30 19:08:49
1,DRF的认证
- 初识认证:浏览器是无状态的,一次导致每次发的请求都是新的请求,所以每次请求,服务器都会进行校验,这样就很繁琐,这趟我们就需要给每一个用户登录后一个新的标识,浏览器每次都会带着这个唯一标识和在服务器中的标识做匹配,成功就通过,不成功就不通过.
- 认证的使用,见下图:
1.2, DRF的相关代码:
model表的创建
view视图函数
认证类
视图的测试
2,DRF权限
- 和django的全下类似,restframeworke也是给某一些用户添加角色,通过给不同的角色分配不同的权限,
- 源码分析如下:
说明:因为python代码是一行一行执行的,所以先是认证,然后是权限,在是频率,按这个顺序执行代码.
权限代码如下:
权限类
权限的视图view
REST_FRAMEWORK = {
# 默认使用的版本控制类
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning',
# 允许的版本
'ALLOWED_VERSIONS': ['v1', 'v2'],
# 版本使用的参数名称
'VERSION_PARAM': 'version',
# 默认使用的版本
'DEFAULT_VERSION': 'v1',
# 配置全局认证
# 'DEFAULT_AUTHENTICATION_CLASSES': ["BRQP.utils.MyAuth", ]
# 配置全局权限
"DEFAULT_PERMISSION_CLASSES": ["BROP.utils.MyPermission"]
}
3,DRF频率
- 频率的由来:开发的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用
- 源码截图如下:
前边的和上边的一样,剩下的只有这一个不一样
3.1,具体代码如下:
自定义频率限制类
自定义频率限制类的配置
3.2,频率限制的频率如下:
- DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通过自己定义的方法来实现,当我们请求进来时,走到我们频率组件的时候,DRF内部会有一个字典记录访问者的ip,以这个访问者的ip作为key,value为一个列表,存放每次访问的时间,(IP1:[第三次访问的时间, 第二次访问的时间, 第一次访问的时间])把每次访问的最新时间放入列表的最前端,记录这样一个数据结构,我们就可以通过限制时间和次数去限流
- 判断访问者的IP是否在这个请求的IP字典中
- 保证这个列表里都是最近10秒内访问的时间
- 判断当前请求时间和和列表里最早的请求时间差
- 如果大于10秒,说明请求以及不是最近10秒的,需要删除掉
- 继续判断倒数第二个,直到差小于10秒
- 判断列表的长度(即访问次数)是否大于我们设置的5次,如果大于就限流,并把时间放入最前端.
4,DRF的生命周期
最新文章
- 08. Web大前端时代之:HTML5+CSS3入门系列~H5 Web存储
- eclipse的常用快捷键
- EXT Grid 默认展开所有行
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- C++线性方程求解
- Java中实现异常处理的基础知识
- logback.xml_appender配置
- [itint5]棋盘漫步
- 35个jQuery小技巧!
- java开发中获取路径的一些方式
- mysql服务无法正常启动
- ROS(indigo)RRT路径规划
- 7种方法实现移动端Retina屏幕1px边框效果
- POJ No.2386 Lake Counting
- altium designer应用技巧---cyclone IV代芯片底部焊盘问题
- thinkphp nginx+phpcgj安装配置
- rac数据库单连接报错ora-12537解决办法
- Spring4 MVC RESTFul WebServices CRUD实例+RestTemplate
- 经验之谈:10位顶级PHP大师的开发原则
- 第98天:CSS3中transform变换详解
热门文章
- angularJS transclude
- 条款9:绝不在构造和析构过程中调用virtual函数(Never call virtual functions during construction or destruction)
- Cisco路由器交换机基础配置
- Android Ubuntu 12.04 源码环境搭建
- python3--产生偏移和元素:enumerate
- hexo干货系列:(二)hexo主题下载及配置
- irules事件和命令
- 七牛云 X 英语流利说:教育 3.0 时代的智能突破
- HDU1213最简单的并查集问题
- [luoguP1772] [ZJOI2006]物流运输(DP + spfa)