feat: add admin session rbac foundation
This commit is contained in:
@@ -27,7 +27,14 @@
|
||||
| 方法 | 路径 | 用途 |
|
||||
| -------- | ----------------------------------------- | -------------------- |
|
||||
| `POST` | `/api/admin/auth/login` | 后台登录 |
|
||||
| `POST` | `/api/admin/auth/refresh` | 使用 HttpOnly Cookie 刷新后台访问令牌 |
|
||||
| `POST` | `/api/admin/auth/logout` | 撤销当前后台会话 |
|
||||
| `GET` | `/api/admin/me` | 当前后台用户 |
|
||||
| `GET` | `/api/admin/system/profile` | 当前用户、角色、权限码和动态菜单 |
|
||||
| `GET/POST/PATCH` | `/api/admin/system/users` | 管理后台用户 |
|
||||
| `GET/POST/PATCH` | `/api/admin/system/roles` | 管理角色和数据范围 |
|
||||
| `GET/POST/PATCH` | `/api/admin/system/menus` | 管理目录、页面和按钮 |
|
||||
| `GET/POST/PATCH` | `/api/admin/system/depts` | 管理部门 |
|
||||
| `GET` | `/api/admin/dashboard` | 工作台统计和最近线索 |
|
||||
| `GET` | `/api/admin/site-config` | 获取全部站点配置 |
|
||||
| `POST` | `/api/admin/site-config/{module}` | 新增模块项 |
|
||||
@@ -88,7 +95,15 @@ type SiteModule =
|
||||
{ "email": "admin@example.test", "password": "<password>" }
|
||||
```
|
||||
|
||||
成功响应包裹为 `data: { token, user: { id, email, name, role } }`;具体字段结构保持现有登录接口约定。
|
||||
成功响应包裹为 `data: { token, accessToken, expiresIn, user: { id, email, name, role } }`。`token` 保留给过渡期 React 管理端,`accessToken` 为短时访问令牌;Refresh Token 只通过同域 HttpOnly Cookie 返回,不进入 JSON。
|
||||
|
||||
管理员登录、刷新和退出依赖 Redis 会话存储。Refresh Token 轮换后旧令牌立即失效;Redis 不可用时认证接口返回 `503`,不降级为无会话校验。
|
||||
|
||||
`/api/admin/system/profile` 返回 `roles`、`permissions`、`menus`、`dataScopes` 和 `deptIds`。菜单只返回启用且可见的目录/页面,按钮菜单保留在页面节点的 `children` 中;前端组件只能从预注册组件白名单加载 `component`。
|
||||
|
||||
角色数据范围使用以下五个编码:`all`(全部)、`dept`(当前部门)、`dept_and_children`(当前部门及子部门)、`custom_dept`(自定义部门)、`self`(本人)。运营资源通过 `deptId` 和 `createdById` 归属字段执行查询过滤;资源归属迁移完成前不得在生产环境切换非管理员角色。
|
||||
|
||||
登录按 IP 与账号组合执行 Redis 限流,默认 60 秒最多 5 次;权限菜单缓存默认 300 秒。Redis 故障不能放行权限检查,缓存不可用时只能重新读取数据库,认证会话和限流不可用时返回 `503`。
|
||||
|
||||
## 兼容边界
|
||||
|
||||
|
||||
Reference in New Issue
Block a user