一、权限管理核心目标
1. 确保生鲜供应链各环节数据安全
2. 实现不同角色(采购、仓储、物流、财务、管理)的操作隔离
3. 满足生鲜行业特有的权限需求(如保质期管理、批次权限等)
4. 符合生鲜电商的合规性要求(如食品安全追溯)
二、权限管理架构设计
1. 基于RBAC模型的扩展设计
```
用户 → 角色 → 权限组 → 具体权限
↓
数据权限(仓库/区域/品类)
```
2. 权限维度划分
- 功能权限:
- 采购模块(供应商管理、采购订单、收货质检)
- 仓储模块(入库、出库、盘点、库存调整)
- 物流模块(配送路线、车辆调度、温度监控)
- 财务模块(对账、结算、成本核算)
- 数据分析(销售报表、损耗分析、库存预警)
- 数据权限:
- 仓库维度(可操作哪些仓库数据)
- 区域维度(可查看哪些地区的业务)
- 品类维度(可管理哪些生鲜品类)
- 批次维度(可操作哪些生产批次的商品)
三、生鲜行业特有权限实现
1. 保质期相关权限
```java
// 示例:保质期检查权限控制
public boolean canProcessExpiringItems(User user) {
return user.hasPermission("EXPIRING_ITEMS_VIEW") &&
(user.isAdmin() ||
user.getWarehouses().contains(currentWarehouse));
}
```
2. 批次管理权限
- 批次创建权限
- 批次锁定权限(防止篡改)
- 批次追溯权限(仅限质量部门)
3. 温度控制权限
- 冷链设备操作权限
- 温度记录查看权限
- 温度异常处理权限
四、技术实现方案
1. 后端实现(Spring Security示例)
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/purchase/").hasRole("PURCHASER")
.antMatchers("/api/warehouse/").hasAnyRole("WAREHOUSE_STAFF", "ADMIN")
.antMatchers("/api/finance/").hasRole("FINANCE")
.antMatchers("/api/admin/").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.apply(new JwtConfigurer(jwtTokenProvider));
}
}
```
2. 数据权限过滤(MyBatis拦截器示例)
```java
@Intercepts({
@Signature(type= Executor.class, method="query",
args={MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class DataPermissionInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
Object parameter = invocation.getArgs()[1];
if (parameter instanceof BaseEntity) {
User user = SecurityContext.getCurrentUser();
// 根据用户角色添加数据过滤条件
((BaseEntity) parameter).setWarehouseIds(user.getWarehouseIds());
}
return invocation.proceed();
}
}
```
3. 前端权限控制(Vue.js示例)
```javascript
// 路由守卫
router.beforeEach((to, from, next) => {
const requiredPermissions = to.meta.permissions;
if (requiredPermissions) {
const hasPermission = requiredPermissions.some(perm =>
store.getters.userPermissions.includes(perm));
if (!hasPermission) {
next(/403); // 无权限页面
return;
}
}
next();
});
// 组件级权限
```
五、安全增强措施
1. 双因素认证:对财务和管理员角色强制启用
2. 操作审计日志:记录所有敏感操作(价格修改、库存调整等)
3. 会话管理:
- 短时效JWT(30分钟)
- 设备指纹识别
- 异地登录提醒
4. 数据脱敏:
- 供应商联系方式部分隐藏
- 财务数据仅对授权角色可见
六、权限管理界面设计
1. 角色管理页面:
- 角色树形结构展示
- 权限勾选矩阵(功能×数据维度)
- 权限继承设置
2. 用户管理页面:
- 用户列表(按部门/角色筛选)
- 批量权限分配
- 权限变更历史
3. 权限审计页面:
- 权限变更记录
- 冲突权限检测
- 权限使用分析
七、测试与验证
1. 单元测试:验证每个权限检查点的正确性
2. 集成测试:测试角色-权限-用户的完整链路
3. 渗透测试:模拟越权访问尝试
4. 用户验收测试:由实际业务人员验证权限合理性
八、持续优化
1. 权限使用分析:定期审查未使用的权限
2. 权限最小化原则:新功能上线时默认不授权
3. 应急权限机制:临时权限的申请-审批-回收流程
4. 权限变更通知:重要权限变更时通知相关用户
通过以上方案,美菜生鲜系统可以建立起既满足业务灵活性需求,又确保数据安全的权限管理体系,有效支撑生鲜供应链的复杂业务场景。