一、多账号管理核心需求
1. 角色隔离
- 供应商、采购员、仓库管理员、财务、门店店长等角色需严格区分操作权限(如供应商仅能修改商品信息,采购员可下单但不可修改价格)。
- 避免权限交叉导致的操作风险(如误改库存、价格泄露)。
2. 数据隔离
- 不同账号访问的数据范围需动态控制(如区域经理仅能看到管辖区域的销售数据)。
- 敏感数据(如成本价、供应商联系方式)需加密存储并限制访问。
3. 操作审计
- 记录所有关键操作(如价格修改、库存调整)的日志,支持按账号、时间、操作类型追溯。
二、万象源码权限模型设计
万象源码(假设为开源或定制化生鲜系统)需基于RBAC(基于角色的访问控制)模型扩展,实现细粒度权限控制:
1. 权限分层设计
- 一级权限:功能模块级(如采购管理、库存管理、订单处理)。
- 二级权限:操作级(如采购单创建、审批、作废)。
- 三级权限:数据字段级(如仅允许查看商品名称,禁止修改成本价)。
2. 动态权限分配
- 角色模板:预设通用角色(如“区域采购员”),快速分配权限。
- 自定义权限:支持按账号单独调整权限(如临时开放某账号的“跨区域调货”权限)。
- 时间限制:权限可设置有效期(如促销期间临时开放价格修改权限)。
3. 权限继承与冲突
- 继承规则:子账号继承父账号权限(如分公司账号继承总部部分权限)。
- 冲突解决:高优先级权限覆盖低优先级(如总部管理员权限优先于区域管理员)。
三、源码部署架构优化
1. 微服务化部署
- 独立权限服务:将权限管理拆分为独立微服务,避免与其他业务逻辑耦合。
- API网关鉴权:所有请求通过网关校验权限,未授权请求直接拦截。
2. 数据库设计
- 权限表结构:
```sql
-- 角色表
CREATE TABLE roles (
role_id INT PRIMARY KEY,
role_name VARCHAR(50),
description TEXT
);
-- 权限表
CREATE TABLE permissions (
permission_id INT PRIMARY KEY,
permission_name VARCHAR(100),
module VARCHAR(50), -- 功能模块
action VARCHAR(20), -- 操作类型(view/edit/delete)
data_scope VARCHAR(50) -- 数据范围(self/region/all)
);
-- 角色-权限关联表
CREATE TABLE role_permissions (
role_id INT,
permission_id INT,
PRIMARY KEY (role_id, permission_id)
);
-- 账号-角色关联表
CREATE TABLE user_roles (
user_id INT,
role_id INT,
PRIMARY KEY (user_id, role_id)
);
```
3. 部署环境隔离
- 多租户架构:为不同客户部署独立实例,数据物理隔离。
- 容器化部署:使用Docker+Kubernetes实现权限服务的快速扩容与隔离。
四、安全加固措施
1. 双因素认证:关键操作(如登录、权限修改)需短信/邮箱验证码二次验证。
2. 操作日志审计:记录所有权限变更操作,支持导出为Excel/PDF供合规检查。
3. 定期权限复核:系统自动提醒管理员复核账号权限,避免权限滥用。
五、实施步骤
1. 需求分析:梳理所有角色及其权限需求,形成权限矩阵表。
2. 源码改造:在万象源码中集成RBAC模型,开发权限管理后台。
3. 测试验证:模拟多账号操作,验证权限隔离与数据安全性。
4. 培训上线:对管理员进行权限配置培训,逐步切换至新系统。
六、示例场景
- 场景:某生鲜连锁企业需实现“区域采购员仅能查看/修改本区域商品,不可操作其他区域”。
- 解决方案:
1. 创建“区域采购员”角色,分配`商品管理`模块的`view/edit`权限,数据范围设为`region`。
2. 在账号创建时绑定区域ID,系统自动过滤非管辖区域数据。
3. 审计日志记录所有商品修改操作,关联账号与区域信息。
通过上述设计,生鲜系统可实现多账号权限的“最小必要原则”,在保障业务灵活性的同时,杜绝越权操作风险。