3.7.3 用户管理

用户、令牌与操作日志

用户(User)

  • 内置账号系统,通过 POST /api/v1/auth/login 登录后获得 JWT
  • 支持管理员创建、修改、重置密码
  • 所有需要认证的 API 都要求 JWT 或 Token

角色

当前版本以单一管理员为主,更多细粒度权限会在后续版本引入。建议通过以下方式隔离使用场景:

  • 后台登录账号:用于人工运维
  • API Token:用于程序化集成(见下)

令牌(Token)

dwz-server 支持两种令牌形态:

1. 登录 Token(JWT)

  • POST /api/v1/auth/login 颁发
  • 放在请求头 Authorization: Bearer <jwt>
  • 默认 24 小时过期,可通过 JWT_EXPIRE_HOURS 调整
  • 适合前端管理后台

2. 个人访问 Token(API Token)

  • 通过 POST /api/v1/tokens 生成
  • 可随时在后台吊销
  • 支持两种认证:
    • Bearer 认证:简单直接,适合内网和测试场景
    • HMAC-SHA256 签名认证X-App-Id / X-Signature / X-Timestamp / X-Nonce密钥不上网,推荐生产外联使用

签名认证的详细算法见「API 参考 → 5.1 认证方式」。

操作日志(Operation Log)

  • OperationLogMiddleware 自动记录所有登录后 API 调用
  • 记录字段:用户、IP、方法、路径、请求体、响应码、耗时
  • 敏感字段(passwordtoken)自动脱敏
  • 支持异步写入,避免阻塞主流程
  • 查询接口:GET /api/v1/logs

审计建议

  • 定期导出日志归档
  • 对高权限操作(删除短链接、重置密码)启用告警
  • 生产环境建议把 config.yamlmiddleware.operation_log.async_logging 设为 true 避免高 QPS 下的性能瓶颈