鉴权改为登录态回库校验,新增 tokenValidAfter 失效时间,支持密码变更与 seed 重置后旧 token 立即失效 患者字段由 idCardHash 统一迁移为 idCard,新增身份证标准化逻辑并同步 C 端生命周期查询参数 组织模块增加小组删除限制(有成员时返回 409)并补充中文错误消息 任务取消接口支持可选 reason 字段(先透传事件层) 补齐 Prisma 迁移、文档说明和 E2E 用例(含设备模块与 token 失效场景)
1.6 KiB
1.6 KiB
认证模块说明(src/auth)
1. 目标
- 提供系统管理员创建、登录、
/me身份查询。 - 使用 JWT 做认证,Guard 做鉴权,RolesGuard 做 RBAC。
2. 核心接口
POST /auth/system-admin:创建系统管理员(需引导密钥)POST /auth/login:手机号 + 角色 + 密码登录(支持同手机号多院场景)GET /auth/me:返回当前登录用户上下文
3. 鉴权流程
AccessTokenGuard从Authorization读取 Bearer Token。- 校验 JWT 签名、
id、iat等关键载荷字段。 - 根据
id回库读取用户当前角色与组织归属,不再直接信任 token 里的角色和范围。 - 校验
iat >= user.tokenValidAfter,若用户被重置密码、seed 重刷或账号被清理,则旧 token 立即失效。 - 当前数据库用户映射为
ActorContext注入request.actor。 RolesGuard根据@Roles(...)判断角色是否允许访问。
4. Token 约定
- Header:
Authorization: Bearer <token> - 载荷关键字段:
id、iat - 角色和组织范围以数据库当前用户记录为准,不以 token 历史载荷为准
5. 错误码与中文消息
- 未登录/Token 失效:
401+ 中文msg - 角色无权限:
403+ 中文msg - 参数非法:
400+ 中文msg
统一由全局异常过滤器输出:{ code, msg, data: null }。
6. 失效策略
- 用户密码被修改后,会刷新
user.tokenValidAfter,旧 token 全部失效。 - 执行 E2E 重置并重新 seed 后,seed 账号的
tokenValidAfter也会刷新,历史 token 不可继续复用。