Files
cattleTransportation/pc-cattle-transportation/SUPER_ADMIN_PERMISSIONS_GUIDE.md

129 lines
3.4 KiB
Markdown
Raw Normal View History

2025-10-20 17:32:09 +08:00
# 超级管理员权限管理指南
## 概述
本指南说明如何为超级管理员账户手机号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`