33 lines
1.0 KiB
Markdown
33 lines
1.0 KiB
Markdown
# 认证模块说明(`src/auth`)
|
||
|
||
## 1. 目标
|
||
|
||
- 提供系统管理员创建、登录、`/me` 身份查询。
|
||
- 使用 JWT 做认证,Guard 做鉴权,RolesGuard 做 RBAC。
|
||
|
||
## 2. 核心接口
|
||
|
||
- `POST /auth/system-admin`:创建系统管理员(需引导密钥)
|
||
- `POST /auth/login`:手机号 + 角色 + 密码登录(支持同手机号多院场景)
|
||
- `GET /auth/me`:返回当前登录用户上下文
|
||
|
||
## 3. 鉴权流程
|
||
|
||
1. `AccessTokenGuard` 从 `Authorization` 读取 Bearer Token。
|
||
2. 校验 JWT 签名与载荷字段。
|
||
3. 载荷映射为 `ActorContext` 注入 `request.actor`。
|
||
4. `RolesGuard` 根据 `@Roles(...)` 判断角色是否允许访问。
|
||
|
||
## 4. Token 约定
|
||
|
||
- Header:`Authorization: Bearer <token>`
|
||
- 载荷关键字段:`id`、`role`、`hospitalId`、`departmentId`、`groupId`
|
||
|
||
## 5. 错误码与中文消息
|
||
|
||
- 未登录/Token 失效:`401` + 中文 `msg`
|
||
- 角色无权限:`403` + 中文 `msg`
|
||
- 参数非法:`400` + 中文 `msg`
|
||
|
||
统一由全局异常过滤器输出:`{ code, msg, data: null }`。
|