# 前端权限管理集成指南 ## 概述 本文档说明如何在前端应用中使用新的权限管理功能,包括接口级权限管理和权限系统监控。 --- ## 功能特性 ### 1. 权限管理页面 **路由**: `/admin/projects/:id/api-permissions` **功能**: - 模块级权限管理(向后兼容) - 接口级权限管理(新增) - 权限系统监控仪表板 ### 2. 权限管理UI #### 模块级权限标签页 - 显示角色 × 模块 × 读写权限的矩阵 - 支持权限编辑和保存 - 向后兼容现有权限系统 #### 接口级权限标签页 - 显示角色 × 接口端点的权限矩阵 - 支持按模块、HTTP方法、端点名称搜索和筛选 - 支持权限编辑和保存 #### 权限监控标签页 - 系统健康评分和状态 - 权限检查性能指标 - 缓存效率统计 - 告警列表展示 --- ## API 客户端使用 ### 导入 API 函数 ```typescript import { fetchProjectRolePermissions, updateProjectRolePermissions, fetchApiEndpointPermissions, updateApiEndpointPermissions, fetchPermissionMetrics, fetchCacheStats, fetchPermissionAlerts, fetchPermissionHealth, resetPermissionMetrics, clearPermissionAlerts, } from "@/api/projectPermissions"; ``` ### 获取权限 ```typescript // 获取模块级权限 const modulePerms = await fetchProjectRolePermissions(studyId); // 获取接口级权限 const apiPerms = await fetchApiEndpointPermissions(studyId); ``` ### 更新权限 ```typescript // 更新模块级权限 await updateProjectRolePermissions(studyId, { roles: { PM: { subjects: { read: true, write: true } }, CRA: { subjects: { read: true, write: true } }, }, }); // 更新接口级权限 await updateApiEndpointPermissions(studyId, { PM: { "POST:/subjects": true, "GET:/subjects": true, }, CRA: { "POST:/subjects": true, "GET:/subjects": true, }, }); ``` ### 获取监控数据 ```typescript // 获取权限检查指标 const metrics = await fetchPermissionMetrics(); // 获取缓存统计 const cacheStats = await fetchCacheStats(); // 获取告警列表 const alerts = await fetchPermissionAlerts("warning", 20); // 获取系统健康状态 const health = await fetchPermissionHealth(); ``` ### 重置监控数据 ```typescript // 重置指标 await resetPermissionMetrics(); // 清除告警 await clearPermissionAlerts(); ``` --- ## 组件使用 ### ApiPermissions.vue(主页面) ```vue ``` **Props**: 无(从路由参数获取项目ID) **事件**: 无 ### ProjectPermissionsModule.vue(模块级权限) ```vue ``` **Props**: - `project`: 项目信息 - `matrix`: 权限矩阵数据 **事件**: - `update`: 权限矩阵更新时触发 ### ApiEndpointPermissions.vue(接口级权限) ```vue ``` **Props**: - `project`: 项目信息 - `matrix`: 权限矩阵数据 **事件**: - `update`: 权限矩阵更新时触发 ### PermissionMonitoring.vue(监控仪表板) ```vue ``` **Props**: - `metrics`: 权限检查指标 - `health`: 系统健康状态 - `alerts`: 告警列表 **事件**: - `refresh`: 刷新按钮点击时触发 --- ## 类型定义 ### ApiEndpointPermissionsResponse ```typescript interface ApiEndpointPermissionsResponse { [role: string]: { [endpoint_key: string]: boolean; }; } ``` ### ApiEndpointPermissionsUpdate ```typescript interface ApiEndpointPermissionsUpdate { [role: string]: { [endpoint_key: string]: boolean; }; } ``` ### PermissionMetricsResponse ```typescript interface PermissionMetricsResponse { check_metrics: PermissionCheckMetrics; cache_metrics: CacheMetrics; uptime_seconds: number; } ``` ### HealthResponse ```typescript interface HealthResponse { status: "healthy" | "degraded" | "unhealthy"; health_score: number; issues: string[]; metrics: PermissionMetricsResponse; cache_stats: CacheStatsResponse; } ``` --- ## 最佳实践 ### 1. 权限管理 - 定期检查权限配置的完整性 - 使用权限监控仪表板监控权限系统状态 - 及时处理告警信息 ### 2. 性能优化 - 监控缓存命中率,目标 > 80% - 监控权限检查响应时间,目标 < 10ms - 定期重置指标以获取准确的统计数据 ### 3. 错误处理 ```typescript try { await updateApiEndpointPermissions(studyId, permissions); ElMessage.success("权限已保存"); } catch (error) { ElMessage.error("保存权限失败"); console.error(error); } ``` --- ## 故障排除 ### 问题1: 权限数据加载失败 **症状**: 权限管理页面显示空白或加载失败 **解决方案**: 1. 检查网络连接 2. 验证项目ID是否正确 3. 检查用户权限是否足够 4. 查看浏览器控制台错误日志 ### 问题2: 权限保存失败 **症状**: 点击保存按钮后没有反应或显示错误 **解决方案**: 1. 检查权限数据格式是否正确 2. 验证API端点是否可用 3. 检查用户是否有权限修改权限配置 4. 查看服务器日志 ### 问题3: 监控数据不更新 **症状**: 监控仪表板显示的数据不更新 **解决方案**: 1. 点击"刷新指标"按钮手动刷新 2. 检查后端监控API是否正常运行 3. 检查网络连接 4. 查看浏览器控制台错误日志 --- ## 后续改进 ### 短期 - [ ] 权限导入/导出功能 - [ ] 权限模板功能 - [ ] 权限审计日志查看 ### 中期 - [ ] 权限预测和建议 - [ ] 权限使用分析 - [ ] 权限风险评估 ### 长期 - [ ] 资源级权限控制 - [ ] 权限继承机制 - [ ] 权限工作流审批 --- **文档版本**: 1.0 **最后更新**: 2026-05-14