Django动态权限拦截器——自定义 Middleware 实现全局鉴权与黑白名单
更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录
在复杂的 Web 应用架构中,权限控制如同城市的安防系统。Django 内置的auth系统、装饰器@login_required、DRF 的Permission类,更像是每家每户的门锁——你需要走到门口才能判断是否放行。
然而,当系统面临诸如:全站 API 防盗刷、动态 IP 黑白名单、基于请求头的全局租户识别、敏感接口的实时熔断等场景时,逐个视图去加锁显然是低效且危险的(容易遗漏)。我们需要在请求到达业务逻辑之前,在城门处就设立一道动态权限拦截器。
这就是 Django Middleware(中间件)的核心用武之地。本文将深度剖析 Django Middleware 的工作机制,并从零构建一个工业级的动态权限拦截器,实现全局鉴权与黑白名单管控。
第一部分:深渊窥探——Django Middleware 执行机制与钩子
Middleware 是 Django 请求/响应处理的插件系统。它是一个钩子框架,用于全局改变 Django 的输入或输出。
1.1 洋葱模型与执行顺序
Django 的 Middle
