129 lines
3.4 KiB
Markdown
129 lines
3.4 KiB
Markdown
# 超级管理员权限管理指南
|
||
|
||
## 概述
|
||
本指南说明如何为超级管理员账户(手机号:15900000000)打开全部菜单权限。
|
||
|
||
## 方法一:通过权限管理界面操作(推荐)
|
||
|
||
### 步骤:
|
||
1. **登录系统**
|
||
- 使用超级管理员账户登录系统
|
||
- 导航到权限管理页面:`/permission/menu`
|
||
|
||
2. **选择目标用户**
|
||
- 在左侧用户列表中找到手机号为 `15900000000` 的用户
|
||
- 点击选择该用户
|
||
|
||
3. **分配权限**
|
||
- **方法A:手动全选**
|
||
- 在右侧菜单树中,手动勾选所有菜单项
|
||
- 点击"保存菜单权限"按钮
|
||
|
||
- **方法B:一键分配(新增功能)**
|
||
- 点击"一键分配全部权限"按钮
|
||
- 确认操作
|
||
- 系统将自动为该用户分配所有菜单权限
|
||
|
||
## 方法二:使用工具函数(开发者)
|
||
|
||
### 导入工具函数
|
||
```javascript
|
||
import {
|
||
assignAllPermissionsToSuperAdmin,
|
||
checkSuperAdminPermissions,
|
||
quickAssignAllPermissions
|
||
} from '@/utils/superAdminHelper.js';
|
||
```
|
||
|
||
### 检查权限状态
|
||
```javascript
|
||
// 检查超级管理员当前权限状态
|
||
const status = await checkSuperAdminPermissions('15900000000');
|
||
console.log('权限状态:', status);
|
||
```
|
||
|
||
### 分配所有权限
|
||
```javascript
|
||
// 为超级管理员分配所有菜单权限
|
||
const success = await assignAllPermissionsToSuperAdmin('15900000000');
|
||
if (success) {
|
||
console.log('权限分配成功');
|
||
}
|
||
```
|
||
|
||
### 一键分配(包含确认提示)
|
||
```javascript
|
||
// 一键分配权限(包含UI确认提示)
|
||
const success = await quickAssignAllPermissions('15900000000');
|
||
```
|
||
|
||
## 方法三:通过API直接调用
|
||
|
||
### 获取所有菜单
|
||
```javascript
|
||
// GET /sysMenu/list
|
||
const menuListRes = await getMenuList();
|
||
const allMenuIds = menuListRes.data.map(menu => menu.id);
|
||
```
|
||
|
||
### 分配权限
|
||
```javascript
|
||
// POST /sysMenu/assignRoleMenus
|
||
const assignRes = await assignRoleMenus({
|
||
roleId: targetUser.roleId,
|
||
menuIds: allMenuIds
|
||
});
|
||
```
|
||
|
||
## 权限验证
|
||
|
||
### 前端验证
|
||
系统会自动检查用户权限:
|
||
- 超级管理员(roleId = 1)自动拥有 `*:*:*` 权限
|
||
- 普通用户根据分配的菜单权限进行验证
|
||
|
||
### 后端验证
|
||
```java
|
||
// 在 LoginServiceImpl.java 中
|
||
if (roleId.equals(RoleConstants.SUPER_ADMIN_ROLE_ID)) {
|
||
return Collections.singletonList(RoleConstants.ALL_PERMISSION);
|
||
}
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **超级管理员特权**:
|
||
- 超级管理员(roleId = 1)在代码层面已经拥有所有权限
|
||
- 菜单权限分配主要用于界面显示和权限管理
|
||
|
||
2. **权限持久化**:
|
||
- 权限分配会保存到数据库的 `sys_role_menu` 表中
|
||
- 重新登录后权限仍然有效
|
||
|
||
3. **安全考虑**:
|
||
- 只有拥有 `permission:menu:assign` 权限的用户才能分配权限
|
||
- 建议定期检查权限分配情况
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
1. **找不到用户**:确认手机号是否正确
|
||
2. **权限分配失败**:检查是否有分配权限的权限
|
||
3. **菜单不显示**:确认菜单权限已正确分配
|
||
|
||
### 调试信息
|
||
系统会在控制台输出详细的调试信息:
|
||
```
|
||
=== 获取用户菜单 ===
|
||
=== 用户权限检查 ===
|
||
=== 权限路由生成 ===
|
||
=== 处理后的菜单列表 ===
|
||
```
|
||
|
||
## 相关文件
|
||
- 前端权限管理:`src/views/permission/menuPermission.vue`
|
||
- 权限API:`src/api/permission.js`
|
||
- 工具函数:`src/utils/superAdminHelper.js`
|
||
- 后端控制器:`SysMenuController.java`
|
||
- 权限验证:`StpInterfaceImpl.java`
|