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里面还有关于权限和限流的方法,它就相当于一个入口。

相关推荐
SuniaWang11 分钟前
《Spring AI + 大模型全栈实战》学习手册系列· 专题二:《Milvus 向量数据库:从零开始搭建 RAG 系统的核心组件》
java·人工智能·分布式·后端·spring·架构·typescript
张小洛13 分钟前
Spring 常用类深度剖析(工具篇 02):ReflectionUtils——优雅操作反射的利器
java·后端·spring·工具类·spring常用类
夕颜11127 分钟前
Skill 与 MCP Function:傻傻分不清楚?
后端
古城小栈31 分钟前
Go 底层代码的完整分类
开发语言·后端·golang
码界奇点32 分钟前
基于Spring Boot和MyBatis的图书管理系统设计与实现
spring boot·后端·车载系统·毕业设计·mybatis·源代码管理
轩情吖38 分钟前
MySQL之事务管理
android·后端·mysql·adb·事务·隔离性·原子性
李长鸿1 小时前
基于Docker的多重内网穿透方案:构建高可用备份架构
后端
程序员爱钓鱼1 小时前
Go PDF处理利器: github.com/pdfcpu/pdfcpu 深度指南
后端·面试·go
bugcome_com1 小时前
【ASP.NET Web Pages】页面布局核心实战:从复用性到安全性,打造一致化网站界面
前端·后端·asp.net
Master_Azur1 小时前
Java面向对象之接口(interface)
后端