Django(61)认证组件源码分析
2021-06-11 17:16
1056 查看
认证组件源码入口
APIView下的
dispatch下的
self.initial(request, *args, **kwargs),源码如下:
def initial(self, request, *args, **kwargs): """ 在调用方法处理程序之前运行任何需要发生的事情 """ # 获取请求的后缀格式 self.format_kwarg = self.get_format_suffix(**kwargs) # 确定使用哪种渲染器和媒体类型来渲染响应,并存储 neg = self.perform_content_negotiation(request) request.accepted_renderer, request.accepted_media_type = neg # 如果正在使用版本控制,则确定 API 版本。 version, scheme = self.determine_version(request, *args, **kwargs) request.version, request.versioning_scheme = version, scheme # 3大认证,确保传入请求被允许 self.perform_authentication(request)self.check_permissions(request)self.check_throttles(request)
三大认证
认证组件
self.perform_authentication(request)
认证组件作用:校验用户 -
游客、
合法用户、
非法用户
- 游客:代表校验通过,直接进入下一步校验(权限校验)
- 合法用户:代表校验通过,将用户存储在
request.user
中,再进入下一步校验(权限校验) - 非法用户:代表校验失败,抛出异常,返回
403
权限异常结果
权限组件
self.check_permissions(request)
权限组件:校验用户权限 -
必须登录、
所有用户、
登录读写游客只读、
自定义用户角色
- 认证通过:可以进入下一步校验(频率认证)
- 认证失败:抛出异常,返回
403
权限异常结果
频率组件
self.check_throttles(request)
频率组件:限制视图接口被访问的
频率次数- 限制的条件
(IP、id、唯一键)、
频率周期时间(s、m、h)、
频率的次数(3/s)没有达到限次:正常访问接口 达到限次:限制时间内不能访问,限制时间达到后,可以重新访问
相关文章推荐
- Django rest framework 的认证流程(源码分析)
- Django rest framework源码分析(1)----认证
- Django restframework 源码分析之认证详解
- Django REST framework之认证权限流程源码分析
- Django rest framework源码分析(一) 认证
- Django源码分析6:auth认证及登陆保持
- django Rest Framework----认证/访问权限控制/访问频率限制 执行流程 Authentication/Permissions/Throttling 源码分析
- Django系列之启动入口源码分析
- 转载——jQuery Easyui 源码分析之combo组件
- Django源码分析之server
- Dubbo SPI组件加载流程源码分析
- iview Form组件源码分析
- Django源码分析1:创建项目和应用分析
- 源码剖析Django REST framework的认证方式
- drf 认证校验及源码分析
- Django学习笔记(13)——Django的用户认证组件,视图层和QuerySet API
- SpringMVC源码分析(4)剖析DispatcherServlet重要组件 推荐
- Django源码分析--引导
- [漏洞分析] CTF:ASP源码审计认证绕过
- Django Form源码分析之Field验证逻辑