分配角色
{{ role.role_name }}
取消
确定
```
### 5.2 关键要点
#### 1. Token解析
```javascript
// 解析JWT Token获取用户信息
const token = localStorage.getItem('token')
const payload = JSON.parse(atob(token.split('.')[1]))
// Payload包含:
{
user_id: 8,
username: "梅州烟草",
user_role: "admin", // 用户角色
area: "梅州", // 用户地区(⭐重要)
exp: 1738036800
}
```
#### 2. 错误处理
```javascript
// 403错误:跨地区操作
if (response.status === 403) {
ElMessage.error('权限不足:只能给同地区用户分配角色')
}
// 401错误:Token过期
if (response.status === 401) {
ElMessage.error('登录已过期,请重新登录')
router.push('/login')
}
```
#### 3. 地区提示
```javascript
// 市级管理员登录时,提示当前地区
if (user_role === 'admin') {
ElMessage.info(`您当前管理的地区:${area}`)
}
```
---
## 附录
### A. 错误码对照表
| HTTP状态码 | 说明 | 常见原因 | 示例 |
|-----------|------|---------|------|
| 200 | 成功 | - | - |
| 400 | 请求参数错误 | 参数格式不正确 | `{"detail": "role_ids必须是数组"}` |
| 401 | 未认证 | Token无效或过期 | `{"detail": "Token已过期"}` |
| 403 | 无权限 | 跨地区操作或权限不足 | `{"detail": "无权限给其他地区用户分配角色"}` |
| 404 | 资源不存在 | 用户或角色不存在 | `{"detail": "用户不存在: user_id=999"}` |
| 500 | 服务器错误 | 后端异常 | `{"detail": "数据库连接失败"}` |
---
### B. JWT Token规范
**Header格式**:
```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
**Payload字段**:
| 字段 | 类型 | 必填 | 说明 | 示例 |
|------|------|------|------|------|
| `user_id` | integer | 是 | 用户ID | 8 |
| `username` | string | 是 | 用户名 | 梅州烟草 |
| `user_role` | string | 是 | 用户角色 | admin, provincial_admin, common |
| `area` | string | 是 | 用户地区(⭐用于权限隔离) | 梅州, 云浮, 揭阳, 潮州 |
| `exp` | integer | 是 | 过期时间(Unix时间戳) | 1738036800 |
| `aud` | string | 是 | 受众标识 | docauditai |
---
### C. 数据库字段重要说明
| 字段 | 表 | 用途 | 示例 | 说明 |
|------|-----|------|------|------|
| `area` | sso_users | **地区隔离**(权限控制) | 梅州, 云浮 | ⭐用于判断市级管理员的操作范围 |
| `ou_name` | sso_users | **部门划分**(组织结构) | 测试技术部, 研发部 | 仅用于显示,不用于权限控制 |
| `ou_id` | sso_users | 组织单位ID | 0000000A1ML | 用于组织树结构 |
**⚠️ 关键区别**:
- `area`:用于**权限隔离**(省/市级别)
- `ou_name`:用于**组织显示**(部门级别)
---
### D. 快速参考
#### 角色类型
| role_key | role_name | 说明 |
|----------|-----------|------|
| `provincial_admin` | 省级管理员 | 最高权限,可操作所有地区 |
| `admin` | 市级管理员 | 地区管理员,只能操作同地区用户 |
| `common` | 普通员工 | 基础权限 |
#### API端点速查
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/v3/rbac/roles` | GET | 获取角色列表(所有人可见) |
| `/api/v2/users` | GET | 获取用户列表(按地区过滤) |
| `/api/v3/rbac/users/{id}/roles` | POST | 分配角色(地区检查) |
| `/api/v3/rbac/users/{id}/roles/{rid}` | DELETE | 移除角色(地区检查) |
---
**文档版本**: v3.3
**最后更新**: 2025-11-28
**维护者**: Backend Team
**反馈渠道**: backend-team@example.com