pmc 33b302c773 fix(affinity-P1): CR-001 + IN-005 修复 UserDevice 软删语义 + is_bound 改名
UserDevice.is_active 改名为 is_bound(消除与 Device.is_active 的命名冲突),
新增 ActiveUserDeviceManager(active manager),4 处控制权解析调用点
(MAC 登录、bind_status、绑定校验、RTC token、绑定 endpoint)切换到
UserDevice.active.filter(...),避免 P2 软删后旧绑定者被签发 user-token、
WS 分组路由错误、RTC 房间归属错乱等安全 / 越权风险。

base_manager_name='objects' 保证 admin 默认 queryset 不受 active 过滤影响。

详见 docs/REVIEW-affinity-P1.md CR-001 / IN-005。
2026-05-13 10:10:14 +08:00
..
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-04-13 11:05:23 +08:00
2026-03-17 13:17:02 +08:00

用户管理模块 (userapp)

概述

用户管理模块提供了完整的用户账号管理功能,包括:

  • 多种方式的用户注册(用户名注册)
  • 多种方式的用户登录(用户名登录、邮箱登录、手机验证码登录)
  • 用户信息管理
  • 密码重置
  • 第三方账号登录(通过 allauth 支持)

API 文档

详细的API文档请参考

  • 用户认证API文档 - 包含所有认证相关接口
  • Swagger API文档运行服务后访问 /swagger/ 路径

认证方式

系统支持两种认证方式:

  1. Token认证基于自定义的Redis存储Token用于API访问
  2. Session认证基于Django内置的session机制主要用于管理后台

目录结构

userapp/
├── models.py      # 用户模型定义
├── views.py       # API视图
├── serializers.py # 序列化器
├── urls.py        # URL路由配置  
├── utils.py       # 工具函数
└── authentication.py # 自定义认证类

登录注册流程

注册流程

  1. 用户名注册:
    • 访问 /api/user/auth/register/
    • 提供用户名、密码、确认密码
    • 可选提供邮箱和手机号

登录流程

系统支持多种登录方式:

  1. 用户名登录:

    • 访问 /api/user/auth/username/login/
    • 提供用户名和密码
    • 获取返回的令牌Token
  2. 邮箱登录:

    • 访问 /api/user/auth/email/login/
    • 提供邮箱和密码
    • 获取返回的令牌Token
  3. 手机验证码登录:

    • 先访问 /api/user/auth/phone/verify/ 获取验证码
    • 然后访问 /api/user/auth/phone/login/ 提供手机号和验证码
    • 获取返回的令牌Token

使用令牌

获取令牌后,在后续请求中添加以下请求头:

Authorization: Bearer {token}