一、权限控制体系设计目标
1. 实现多层级、细粒度的权限管理
2. 支持RBAC(基于角色的访问控制)模型扩展
3. 满足生鲜行业特殊业务场景需求
4. 确保系统安全性和数据保密性
二、核心权限控制模块设计
1. 用户身份认证体系
- 多因素认证:支持账号密码+短信/邮件验证码+生物识别
- 单点登录(SSO):集成企业微信/钉钉等第三方认证
- 会话管理:设置会话超时时间、多设备登录限制
- 审计日志:记录所有登录行为及异常尝试
2. 角色权限模型设计
```
用户 → 角色 → 权限组 → 具体权限
```
- 基础角色:
- 系统管理员
- 采购管理员
- 仓库管理员
- 配送员
- 财务人员
- 供应商
- 普通员工
- 生鲜行业特色角色:
- 质检员(品控权限)
- 冷链监控员(温度控制权限)
- 批次管理员(溯源管理权限)
3. 细粒度权限控制点
采购模块
- 供应商查看权限(可查看/不可查看)
- 采购单创建权限(金额上限控制)
- 采购审批流程权限(多级审批设置)
- 价格敏感信息访问权限
仓储模块
- 库存查看权限(按仓库/品类划分)
- 入库操作权限(质检/上架分离)
- 出库操作权限(拣货/打包分离)
- 库存调整权限(损耗/盘盈盘亏)
配送模块
- 路线规划权限(区域分配)
- 车辆调度权限
- 温度监控权限(冷链车辆)
- 签收确认权限
财务模块
- 应付账款查看权限
- 付款操作权限(金额分级授权)
- 对账权限(供应商对账)
- 报表生成权限
4. 数据权限控制
- 字段级权限:如价格字段对普通员工隐藏
- 行级权限:仓库管理员只能看到自己负责的仓库数据
- 范围权限:区域经理只能查看指定区域的数据
- 时间权限:历史数据访问时间范围限制
三、特色权限控制实现
1. 生鲜品控权限
- 质检报告查看/编辑权限
- 批次锁定权限(问题商品处理)
- 保质期预警设置权限
- 召回流程操作权限
2. 冷链监控权限
- 温度阈值设置权限
- 异常报警接收权限
- 历史温度曲线查看权限
- 设备校准操作权限
3. 供应商协作权限
- 订单协同查看权限
- 对账信息共享权限
- 评价系统操作权限
- 促销活动参与权限
四、技术实现方案
1. 权限数据存储
```sql
-- 用户表
CREATE TABLE sys_user (
user_id BIGINT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password_hash VARCHAR(100) NOT NULL,
status TINYINT DEFAULT 1,
last_login DATETIME
);
-- 角色表
CREATE TABLE sys_role (
role_id BIGINT PRIMARY KEY,
role_name VARCHAR(50) NOT NULL,
role_desc VARCHAR(200),
is_system TINYINT DEFAULT 0
);
-- 权限表
CREATE TABLE sys_permission (
perm_id BIGINT PRIMARY KEY,
perm_code VARCHAR(50) NOT NULL,
perm_name VARCHAR(100) NOT NULL,
perm_type TINYINT NOT NULL COMMENT 1-菜单 2-按钮 3-API 4-数据,
parent_id BIGINT,
url VARCHAR(200),
icon VARCHAR(50),
sort INT
);
-- 用户-角色关联
CREATE TABLE sys_user_role (
id BIGINT PRIMARY KEY,
user_id BIGINT NOT NULL,
role_id BIGINT NOT NULL
);
-- 角色-权限关联
CREATE TABLE sys_role_perm (
id BIGINT PRIMARY KEY,
role_id BIGINT NOT NULL,
perm_id BIGINT NOT NULL,
data_scope VARCHAR(20) COMMENT 数据范围:ALL/SELF/DEPT等
);
-- 数据权限规则表
CREATE TABLE sys_data_rule (
rule_id BIGINT PRIMARY KEY,
perm_id BIGINT NOT NULL,
rule_type TINYINT NOT NULL COMMENT 1-部门 2-区域 3-供应商等,
rule_value VARCHAR(200) NOT NULL
);
```
2. 权限校验流程
```
1. 用户请求 →
2. 鉴权中间件拦截 →
3. 验证JWT令牌有效性 →
4. 查询用户权限缓存 →
5. 检查API权限 →
6. 检查数据权限规则 →
7. 执行操作或返回403
```
3. 动态权限加载
- 使用Redis缓存权限数据(TTL=30分钟)
- 实现权限变更实时推送机制
- 支持权限热加载,无需重启服务
五、特色功能实现
1. 智能权限推荐
- 基于用户岗位自动推荐角色
- 权限使用频率分析
- 权限冗余检测与清理建议
2. 临时权限管理
- 限时权限授予(如节假日值班)
- 一次性密码生成
- 操作审计追踪
3. 权限变更追溯
- 权限调整历史记录
- 变更影响分析
- 权限冲突检测
六、安全增强措施
1. 权限最小化原则:默认拒绝所有权限,按需授权
2. 敏感操作二次验证:如付款、删单等操作需额外验证
3. 权限隔离:供应商只能访问自有数据
4. 操作水印:截图自动添加操作人信息
5. 定期权限审计:每月生成权限使用报告
七、实施路线图
1. 第一阶段(1个月):
- 完成权限模型设计
- 开发基础权限管理界面
- 实现核心API权限控制
2. 第二阶段(2个月):
- 开发数据权限控制模块
- 实现生鲜行业特色权限
- 完成权限缓存机制
3. 第三阶段(1个月):
- 开发权限审计系统
- 实现临时权限管理
- 完成压力测试和安全加固
八、测试要点
1. 功能测试:
- 角色创建与权限分配
- 权限继承与覆盖测试
- 跨角色权限冲突检测
2. 安全测试:
- 越权访问测试
- 权限提升攻击模拟
- 敏感数据泄露检测
3. 性能测试:
- 权限校验响应时间
- 高并发下的权限缓存命中率
- 权限数据加载性能
九、运维监控
1. 实时监控:
- 异常权限变更报警
- 频繁权限校验失败监控
- 权限缓存命中率统计
2. 日志分析:
- 权限使用模式分析
- 潜在安全风险识别
- 权限使用效率报告
该方案通过多层次的权限控制设计,既满足了生鲜行业复杂的业务场景需求,又确保了系统的高安全性和可维护性。实际开发中可根据具体业务需求进一步调整权限颗粒度。