一、权限管理核心架构设计
1. RBAC+ABAC混合模型
- RBAC(基于角色访问控制):定义采购员、仓库管理员、财务审核员等基础角色,分配菜单/功能权限
- ABAC(基于属性访问控制):通过动态属性(如区域、供应商等级、订单金额)实现细粒度控制
- 示例:上海区域采购员只能查看/操作上海仓库的生鲜商品,且单笔订单权限≤5万元
2. 权限维度分层
```mermaid
graph TD
A[权限体系] --> B[数据权限]
A --> C[功能权限]
A --> D[字段权限]
B --> B1(仓库数据隔离)
B --> B2(供应商数据可见性)
C --> C1(菜单按钮级控制)
C --> C2(API接口权限)
D --> D1(价格字段隐藏)
D --> D2(库存明细脱敏)
二、关键功能模块实现
1. 权限中心后台
- 可视化配置:拖拽式角色权限分配界面,支持权限树状结构展示
- 权限继承:角色组设计(如"全国采购总监"继承"区域采购经理"权限)
- 审批流集成:高风险操作(如价格修改)需二次审批
2. 动态权限引擎
```java
// 伪代码示例:基于Spring Security的动态权限判断
public boolean hasPermission(User user, String resource, String action) {
// 1. 检查基础RBAC权限
if (!rbacService.checkPermission(user.getRoles(), resource, action)) {
return false;
}
// 2. 检查ABAC动态属性
Map attributes = buildAttributes(user);
return abacEngine.evaluate(resource, action, attributes);
}
```
3. 数据权限控制
- SQL拦截器:通过MyBatis插件动态修改SQL(如添加`AND warehouse_id IN (用户管辖仓库ID列表)`)
- JPA规范:使用Spring Data JPA的Specification实现动态查询条件
三、生鲜行业特有场景处理
1. 时效性权限控制
- 早市采购员权限:04:00-08:00可操作鲜肉品类
- 夜间入库权限:20:00-06:00仅开放基础收货功能
2. 供应链权限隔离
- 供应商视角:只能看到自己供货的商品数据
- 物流视角:按运输线路分配配送单查看权限
- 质检视角:根据商品类别分配检测报告上传权限
3. 移动端特殊处理
- 扫码枪操作权限:仅仓库特定区域可扫描入库
- 离线权限缓存:网络中断时保留基础操作权限(需同步机制)
四、安全增强措施
1. 操作审计追踪
- 记录所有权限变更操作(谁、何时、修改了什么权限)
- 关键操作双因素认证(如修改价格需短信验证码)
2. 防越权设计
- 前端路由守卫:动态生成可访问菜单
- 后端接口鉴权:每个API调用携带权限令牌
- 数据库行级安全:通过视图或存储过程限制数据访问
3. 应急权限方案
- 突破权限申请:紧急情况下可申请临时权限(需审批)
- 权限回收机制:离职人员权限自动冻结+人工复核
五、实施路线图
1. 第一阶段(2周)
- 完成RBAC基础框架搭建
- 实现角色管理、权限组配置功能
2. 第二阶段(3周)
- 开发ABAC动态规则引擎
- 集成生鲜行业特有的时效性权限控制
3. 第三阶段(2周)
- 完善审计日志和操作追溯
- 移动端权限适配
4. 第四阶段(持续)
- 权限策略优化迭代
- 定期安全渗透测试
六、技术选型建议
- 后端框架:Spring Security + JWT(适合微服务架构)
- 数据库:MySQL(权限表) + Redis(权限缓存)
- 前端:Vue/React动态路由 + 按钮级权限控制
- 监控:ELK收集权限操作日志,Prometheus监控异常访问
七、典型业务场景示例
场景:区域经理审批超过权限的采购订单
```
1. 采购员提交10万元订单(自身权限5万)
2. 系统自动触发权限突破申请流程
3. 区域经理收到审批通知,通过后临时提升采购员权限
4. 审批记录永久保存,供后续审计
```
通过上述方案,美菜生鲜系统可实现:
- 权限配置效率提升60%(通过可视化界面)
- 越权操作减少90%(通过动态权限校验)
- 审计合规性100%覆盖(全链路操作留痕)
- 适应生鲜行业特有的时效性、区域性业务需求
建议每季度进行权限策略复审,结合业务发展动态调整权限模型,同时建立权限应急响应机制,确保在系统故障时仍能维持基本业务运转。