Files
cattleTransportation/pc-cattle-transportation/SUPER_ADMIN_PERMISSIONS_GUIDE.md
2025-10-20 17:32:09 +08:00

129 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 超级管理员权限管理指南
## 概述
本指南说明如何为超级管理员账户手机号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`