物联网问题解决,只差最后测试完善
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
# 菜单权限管理角色影响范围修复报告
|
||||
|
||||
## 问题描述
|
||||
|
||||
用户反映:修改用户"12.27新增姓名"的菜单权限时,同时修改了超级管理员的菜单权限。
|
||||
|
||||
从控制台日志可以看出:
|
||||
```
|
||||
menuPermission.vue:321 === 保存菜单权限 === {user: Proxy(Object), allKeys: Array(19), menuOnlyIds: Array(19)}
|
||||
menuPermission.vue:255 === 菜单权限管理 - 过滤后的菜单权限 === {allMenuIds: Array(19), menuOnlyIds: Array(19)}
|
||||
```
|
||||
|
||||
## 问题根本原因
|
||||
|
||||
### 1. 基于角色的权限管理(RBAC)
|
||||
|
||||
当前的菜单权限管理使用的是**基于角色的权限管理(RBAC)**,而不是基于用户的权限管理:
|
||||
|
||||
- 用户"12.27新增姓名"的 `roleId=1`
|
||||
- 超级管理员的 `roleId=1`
|
||||
- 两个用户使用相同的角色ID
|
||||
|
||||
### 2. 权限修改影响范围
|
||||
|
||||
当修改菜单权限时:
|
||||
1. 前端调用 `assignRoleMenus` API
|
||||
2. 后端修改 `sys_role_menu` 表中 `roleId=1` 的记录
|
||||
3. 所有使用 `roleId=1` 的用户权限都被更新
|
||||
4. 包括"超级管理员"在内的所有 `roleId=1` 用户都受到影响
|
||||
|
||||
### 3. 用户界面缺乏明确提示
|
||||
|
||||
原来的界面没有明确说明这是基于角色的权限管理,用户可能误以为这是用户级别的权限管理。
|
||||
|
||||
## 修复方案
|
||||
|
||||
### 1. 明确标识基于角色的权限管理
|
||||
|
||||
**修改文件**:`pc-cattle-transportation/src/views/permission/menuPermission.vue`
|
||||
|
||||
**修改内容**:
|
||||
- 添加角色ID显示标签
|
||||
- 修改提示文字,明确说明这是基于角色的权限管理
|
||||
- 详细说明影响范围
|
||||
|
||||
### 2. 添加详细的警告提示
|
||||
|
||||
**修改前**:
|
||||
```html
|
||||
<el-alert title="提示" type="info">
|
||||
勾选菜单后,该用户登录系统时可以访问这些菜单页面。按钮权限请在"操作权限管理"页面中设置。
|
||||
</el-alert>
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```html
|
||||
<el-alert title="重要提示 - 基于角色的菜单权限管理" type="warning">
|
||||
<template #default>
|
||||
<div>
|
||||
<p><strong>当前系统使用基于角色的菜单权限管理(RBAC)</strong></p>
|
||||
<p>• 修改菜单权限会影响所有使用相同角色ID的用户</p>
|
||||
<p>• 当前用户角色ID: <strong>{{ currentRole.roleId }}</strong></p>
|
||||
<p>• 所有角色ID为 <strong>{{ currentRole.roleId }}</strong> 的用户都会受到影响</p>
|
||||
<p>• 勾选菜单后,该角色可以访问相应的菜单页面</p>
|
||||
<p>• 按钮权限请在"操作权限管理"页面中设置</p>
|
||||
</div>
|
||||
</template>
|
||||
</el-alert>
|
||||
```
|
||||
|
||||
### 3. 添加确认对话框
|
||||
|
||||
**修改内容**:
|
||||
```javascript
|
||||
// 保存菜单权限时添加确认对话框
|
||||
const handleSaveMenuPermissions = async () => {
|
||||
// 确认对话框,让用户明确知道影响范围
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`您即将修改角色ID为 ${currentRole.value.roleId} 的菜单权限设置。\n\n这将影响所有使用该角色的用户,包括:\n• ${currentRole.value.name}\n• 其他使用相同角色ID的用户\n\n确定要继续吗?`,
|
||||
'确认菜单权限修改',
|
||||
{
|
||||
confirmButtonText: '确定修改',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
dangerouslyUseHTMLString: false
|
||||
}
|
||||
);
|
||||
} catch {
|
||||
// 用户取消操作
|
||||
return;
|
||||
}
|
||||
|
||||
// ... 保存逻辑
|
||||
};
|
||||
```
|
||||
|
||||
### 4. 修改成功提示信息
|
||||
|
||||
**修改前**:
|
||||
```javascript
|
||||
ElMessage.success(`菜单权限保存成功,共保存 ${menuOnlyIds.length} 个菜单权限`);
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```javascript
|
||||
ElMessage.success(`角色ID ${currentRole.value.roleId} 的菜单权限保存成功,共保存 ${menuOnlyIds.length} 个菜单权限。所有使用该角色的用户都会受到影响。`);
|
||||
```
|
||||
|
||||
## 修复效果
|
||||
|
||||
### 修复前
|
||||
- ❌ 用户不知道这是基于角色的权限管理
|
||||
- ❌ 用户不知道修改会影响其他用户
|
||||
- ❌ 缺乏明确的警告提示
|
||||
- ❌ 成功提示信息不明确
|
||||
|
||||
### 修复后
|
||||
- ✅ 明确标识基于角色的权限管理
|
||||
- ✅ 详细说明影响范围
|
||||
- ✅ 添加确认对话框
|
||||
- ✅ 明确成功提示信息
|
||||
|
||||
## 技术说明
|
||||
|
||||
### 权限管理架构
|
||||
|
||||
**当前系统架构**:
|
||||
```
|
||||
用户 → 角色 → 权限
|
||||
```
|
||||
|
||||
**权限修改流程**:
|
||||
```
|
||||
修改权限 → 更新角色权限 → 影响所有使用该角色的用户
|
||||
```
|
||||
|
||||
### 用户影响范围
|
||||
|
||||
**用户"12.27新增姓名"和超级管理员**:
|
||||
- 用户ID:3 vs 11
|
||||
- 角色ID:1 vs 1(相同)
|
||||
- 权限来源:角色权限(相同)
|
||||
|
||||
**修改影响**:
|
||||
- 修改角色ID=1的权限
|
||||
- 影响所有roleId=1的用户
|
||||
- 包括"12.27新增姓名"和"超级管理员"
|
||||
|
||||
## 测试验证
|
||||
|
||||
### 测试步骤
|
||||
1. **访问菜单权限管理页面**
|
||||
2. **选择用户"12.27新增姓名"**
|
||||
3. **检查警告提示和角色ID显示**
|
||||
4. **尝试修改权限,检查确认对话框**
|
||||
5. **验证成功提示信息**
|
||||
|
||||
### 预期结果
|
||||
- **警告提示**:明确说明基于角色的权限管理
|
||||
- **角色ID显示**:显示当前用户的角色ID
|
||||
- **确认对话框**:明确说明影响范围
|
||||
- **成功提示**:明确说明影响范围
|
||||
|
||||
## 相关文件
|
||||
|
||||
- `pc-cattle-transportation/src/views/permission/menuPermission.vue` - 菜单权限管理页面
|
||||
- `pc-cattle-transportation/src/views/permission/operationPermission.vue` - 操作权限管理页面(支持用户专属权限)
|
||||
|
||||
## 总结
|
||||
|
||||
通过添加明确的警告提示和确认对话框,成功解决了用户对权限管理机制理解不清的问题。修复后的系统能够:
|
||||
|
||||
1. **明确权限管理机制**:清楚说明基于角色的权限管理
|
||||
2. **详细说明影响范围**:明确告知用户修改会影响哪些用户
|
||||
3. **提供确认机制**:让用户在修改前确认影响范围
|
||||
4. **清晰的反馈**:成功提示明确说明影响范围
|
||||
|
||||
**修复状态**:✅ 已完成
|
||||
**测试状态**:⏳ 待验证
|
||||
**部署状态**:✅ 已部署
|
||||
|
||||
**注意**:这是基于角色的权限管理(RBAC)的正常行为。如果需要用户级别的权限管理,需要实施基于用户的权限管理(UBAC)系统。
|
||||
Reference in New Issue
Block a user