目录(点击跳转)
1. 认证体系
1.1 三种认证方式对比
Session 认证
- 基于 Cookie + 服务端存储 Session
- 适合:前后端不分离、单服务、后台管理
- 缺点:分布式/跨域不方便,依赖 Cookie
Token 认证
- 客户端携带 Token 请求
- 服务端查询 Token 有效性
- 适合:前后端分离、多端登录
JWT 认证(最常用)
- 自包含令牌,无需查库验证
- 无状态、支持分布式、跨域友好
- 适合:微服务、前后端分离、第三方对接
1.2 JWT 标准结构
- Header:算法(如 HS256)+ 令牌类型
- Payload:用户ID、过期时间、权限(不存敏感信息)
- Signature:签名,防篡改
- 格式:
Header.Payload.Signature
1.3 续签机制
- AccessToken 短期(15-30分钟)
- RefreshToken 长期(7天)
- 过期用 RefreshToken 换新,提升安全性
1.4 黑名单机制
- 登出/强制下线:将 Token 加入黑名单(Redis存储)
- 每次请求校验是否在黑名单
- 解决 JWT 无法主动作废问题
1.5 面试必背要点
- JWT 不存敏感信息(密码、手机号)
- 必须用 HTTPS 防止劫持
- 敏感接口必须二次校验
2. 权限控制
2.1 DRF 内置权限类
AllowAny:完全开放IsAuthenticated:已登录IsAdminUser:管理员IsAuthenticatedOrReadOnly:登录可写,未登录只读
2.2 自定义权限类
- 继承
BasePermission - 重写
has_permission方法 - 可根据用户、角色、IP、接口、参数灵活控制
2.3 RBAC 权限模型(企业级必用)
- 用户表 → 关联角色
- 角色表 → 关联权限
- 权限表 → 菜单/按钮/接口
- 粒度:菜单权限 → 页面权限 → 按钮权限 → 接口权限 → 数据权限
2.4 医疗项目权限实践
- 分级审核:普通用户、审核员、管理员、超级管理员
- 数据隔离:只能看自己/本部门数据
- 操作留痕:所有权限操作记录日志
3. 限流
3.1 作用
- 防止暴力攻击、爬虫、刷接口
- 保护服务器稳定性
- 避免恶意请求压垮服务
3.2 内置限流类
AnonRateThrottle:未登录用户限流UserRateThrottle:登录用户限流
3.3 配置格式
default_rate = '30/minute'每分钟30次- 支持:second、minute、hour、day
3.4 扩展方案
- 全局限流 + 接口自定义限流
- 敏感接口(登录、支付)加强限流
- 结合 Redis 实现分布式限流
4. 序列化器
4.1 核心作用
- 模型 → JSON(响应)
- JSON → 模型(请求)
- 全自动数据校验(必填、类型、长度、格式)
4.2 to_representation 自定义返回
- 重写该方法,自定义返回字段结构
- 拼接字段、翻译枚举、格式化时间、嵌套展示
- 不影响入库逻辑,只改输出格式
4.3 validate 字段校验
- 单字段校验:
validate_字段名 - 全局校验:
validate - 自定义规则:手机号、身份证、唯一性、业务逻辑校验
- 校验失败直接抛异常,返回前端
4.4 create / update 重写
- 自定义入库逻辑
- 处理关联数据、额外字段、状态变更、日志记录
- 支持事务、分布式锁
4.5 序列化优化(面试必问)
- 严禁在序列化里写查询语句(导致N+1)
- 关联查询必须在视图层用
select_related/prefetch_related - 只读字段用
read_only_fields - 只写字段用
write_only_fields
5. 分页、过滤、搜索、排序
5.1 分页
PageNumberPagination:页码分页(最常用)LimitOffsetPagination:偏移量分页CursorPagination:游标分页(大数据、高并发)
5.2 过滤
- 依赖
django-filter - 支持:精确、模糊、范围、时间、多字段联合过滤
- 适合:列表查询、条件筛选
5.3 搜索
SearchFilter- 指定支持搜索的字段
- 模糊匹配,适合快速检索
5.4 排序
OrderingFilter- 指定可排序字段
- 支持正序、倒序
6. DRF 高频面试扩展知识点
6.1 全局异常处理
- 统一捕获:API 异常、ORM 异常、校验异常、业务异常
- 统一返回格式:code + msg + data
- 日志记录,方便排查
6.2 接口文档自动生成
drf-yasg或drf-spectacular- 自动生成 Swagger 文档
- 无需手动维护
6.3 版本控制
- URL 或 Header 控制版本
- 兼容新旧接口,平滑升级
6.4 响应封装
- 统一返回结构
- 成功/失败固定格式
- 前端易于处理
6.5 企业最佳实践
- JWT 认证 + RBAC 权限
- 全局异常 + 统一响应
- 限流 + 日志 + 审计
- 序列化严格校验
评论区