实现一个完整的功能权限控制系统,包括后端权限验证和前端按钮控制。
Sys_User: 用户表Sys_Role: 角色表Sys_FunctionCode: 功能代码表Sys_User_Sys_Role: 用户角色关联表Sys_Role_Sys_FunctionCode: 角色功能代码关联表实体类:
Repository层:
Service层:
权限验证:
权限管理工具 (permission.js):
权限指令 (permission.js):
Axios拦截器:
@RestController
@RequestMapping("/api/pilot-plan")
public class PilotPlanController {
@GetMapping("/list")
@RequirePermission("PILOT_PLAN_VIEW") // 需要查看权限
public ResponseEntity<PageResponse<PilotPlanDTO>> getPilotPlans(PilotPlanQueryDTO queryDTO) {
// ...
}
@PostMapping("/import")
@RequirePermission("PILOT_PLAN_IMPORT") // 需要导入权限
public ResponseEntity<Map<String, Object>> importPilotPlans(@RequestBody Map<String, Object> request) {
// ...
}
}
<template>
<div>
<!-- 只有拥有PILOT_PLAN_IMPORT权限的用户才能看到导入按钮 -->
<el-button type="primary" @click="importData" v-permission="'PILOT_PLAN_IMPORT'">
导入数据
</el-button>
<!-- 只有拥有PILOT_PLAN_EXPORT权限的用户才能看到导出按钮 -->
<el-button type="success" @click="exportData" v-permission="'PILOT_PLAN_EXPORT'">
导出数据
</el-button>
</div>
</template>
import PermissionManager from '@/utils/permission.js'
// 检查用户是否有特定权限
if (PermissionManager.hasPermission('PILOT_PLAN_EDIT')) {
// 用户有编辑权限,执行相应操作
enableEditButtons();
} else {
// 用户没有编辑权限,禁用相关功能
disableEditButtons();
}
用户登录 (在认证服务中):
前端存储权限:
前端权限控制:
后端权限验证 (在JavaBackend中):