DRF框架认证底层源码解析——简单易理解!

(前提:学过一点Django框架,更好理解)

一.从请求发送过来到执行认证的简单过程梳理

请求首先来到urls模块,而后根据 URL 映射找到 UserViewas_view() as_view()内部会执行两个命令(简单来说):

ini 复制代码
obj = UserView()  #实例化一个obj
obj.dispatch()  #调用对象的dispatch方法

as_view()方法源码在哪里呢?

来到view模块,从class UserView(APIView)里继承的APIView开始一步步跳转

APIView如下图所示 点进as_view(),找到一个叫view的方法,如下图所示

view 复制代码
def view(request, *args, **kwargs):
    self = cls(**initkwargs)
    self.setup(request, *args, **kwargs)
    if not hasattr(self, "request"):
        raise AttributeError(
            "%s instance has no 'request' attribute. Did you override "
            "setup() and forget to call super()?" % cls.__name__
        )
    return self.dispatch(request, *args, **kwargs)

view方法的self = cls(**initkwargs)>>>>实例化了obj

最后便调用了dispatch方法(这是接下来的核心!)

二.开始认证源码流程

看下图,简单清晰明了 不仅如此,dispatch里面还有关于权限和限流的方法,它就相当于一个入口。

相关推荐
Java水解25 分钟前
[Spring] Spring配置文件
后端·spring
马卡巴卡30 分钟前
SpringBoot项目使用Redis对用户IP进行接口限流
后端
VX:Fegn089532 分钟前
计算机毕业设计|基于springboot + vue酒店预约系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
汤姆yu35 分钟前
基于springboot的校园家教信息系统
java·spring boot·后端·校园家教
q***062936 分钟前
Spring Boot--@PathVariable、@RequestParam、@RequestBody
java·spring boot·后端
血小溅44 分钟前
Springboot项目Docker 多平台构建指南
后端·docker
D***44141 小时前
Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘(上)
java·spring boot·后端
武子康1 小时前
大数据-172 Elasticsearch 索引操作与 IK 分词器落地实战:7.3/8.15 全流程速查
大数据·后端·elasticsearch
疯狂的程序猴1 小时前
iOS 性能检测工具深度解析 多工具协同下的全维度性能检测体系建设
后端