一、权限管理核心目标
1. 最小权限原则:用户仅能访问完成工作所需的最小功能与数据。
2. 职责分离:避免单一用户拥有冲突权限(如采购与审批同属一人)。
3. 动态权限:支持按角色、部门、时间等条件动态调整权限。
4. 审计追踪:记录所有权限变更和敏感操作,满足合规要求。
二、权限管理设计要点
1. 角色与权限模型
- RBAC(基于角色的访问控制):
- 定义角色(如供应商、采购员、管理员),为角色分配权限集合。
- 用户通过绑定角色获得权限,支持多角色叠加(如“区域经理”可同时拥有“采购审批”和“数据查看”权限)。
- ABAC(基于属性的访问控制)(可选):
- 结合用户属性(部门、职位)、资源属性(数据范围、业务类型)动态决策权限,适合复杂业务场景。
2. 权限分类
- 功能权限:
- 菜单/按钮级控制(如供应商只能看到“商品上传”功能,采购员可见“订单审批”)。
- 接口级控制(如禁止供应商调用“修改价格”接口)。
- 数据权限:
- 行级数据隔离(如区域经理只能查看本区域订单)。
- 列级数据脱敏(如财务人员看到部分隐藏的客户联系方式)。
- 操作权限:
- 读写分离(如仓库管理员可编辑库存,但不可删除历史记录)。
- 操作频率限制(如防止批量删除订单)。
3. 权限管理模块设计
- 权限配置后台:
- 可视化界面管理角色、权限、用户关系。
- 支持权限模板(如“基础供应商”模板包含商品管理、订单查看权限)。
- 权限继承与覆盖:
- 部门/组织架构权限继承(如总部管理员自动拥有分支机构权限)。
- 临时权限申请(如员工申请临时访问财务数据的权限,需审批流)。
- 权限审计日志:
- 记录权限分配、修改、撤销操作,包括操作人、时间、IP地址。
- 定期生成权限审计报告,供安全团队审查。
三、技术实现方案
1. 后端权限控制
- API网关层:
- 使用JWT或OAuth2.0鉴权,在网关层拦截未授权请求。
- 结合权限中间件(如Spring Security、Casbin)验证用户权限。
- 数据库层:
- 行级数据过滤(如通过SQL `WHERE`条件限制数据范围)。
- 视图或存储过程封装敏感数据查询。
- 微服务架构:
- 每个服务独立维护权限规则,通过服务间鉴权(如gRPC元数据传递权限信息)。
2. 前端权限控制
- 动态路由:
- 根据用户权限动态生成菜单(如Vue Router的`addRoutes`)。
- 按钮级禁用:
- 通过指令或组件属性控制按钮显示/禁用(如`v-permission="[edit]"`)。
- 数据脱敏:
- 前端对敏感字段(如手机号、金额)进行部分隐藏或加密显示。
3. 权限缓存与性能优化
- Redis缓存:
- 缓存用户权限信息,减少数据库查询。
- 设置短期缓存(如5分钟),权限变更时主动刷新缓存。
- 异步加载:
- 首次登录时异步加载权限数据,避免阻塞主流程。
四、生鲜系统特殊场景处理
1. 供应商权限:
- 限制供应商只能操作自己上传的商品,不可查看其他供应商数据。
- 禁止修改已审核的商品信息(需提交变更申请)。
2. 采购与审批流:
- 采购员提交订单后,自动触发审批流,仅审批人可查看/操作审批环节。
3. 配送员权限:
- 配送员仅能查看自己负责区域的订单,不可修改订单状态(需通过扫码确认)。
4. 财务权限:
- 财务人员可导出数据,但不可直接修改系统金额字段。
五、安全与合规措施
1. 权限回收机制:
- 员工离职或转岗时,自动回收所有权限。
- 定期清理长期未登录账户的权限。
2. 双因素认证(2FA):
- 对高权限操作(如修改系统配置)强制要求二次验证。
3. 合规性检查:
- 符合GDPR、等保2.0等法规要求,确保数据访问留痕。
六、测试与上线
1. 权限测试用例:
- 测试越权访问(如普通用户尝试访问管理员接口)。
- 测试权限继承与覆盖逻辑。
2. 灰度发布:
- 先对部分用户开放新权限系统,监控异常行为。
3. 用户培训:
- 制作权限管理操作手册,培训管理员正确配置权限。
七、持续优化
- 权限使用分析:
- 通过日志分析权限使用频率,清理冗余权限。
- 自动化巡检:
- 定期扫描系统中的“超级用户”账户,评估风险。
- 用户反馈机制:
- 收集用户对权限配置的反馈,优化权限模型。
通过以上方案,美菜生鲜系统可实现精细化、安全化的权限管理,既满足业务灵活性需求,又确保系统安全可控。