一、设计原则
1. 最小权限原则
- 用户仅被授予完成工作所需的最小权限,避免过度授权导致数据泄露或误操作。
- 例如:普通采购员仅能查看商品信息,无法修改价格;财务人员可操作订单结算,但无权删除订单。
2. 职责分离原则
- 将关键操作拆分给不同角色,防止单一用户拥有过高权限。
- 例如:订单创建与审批需由不同人员完成,避免内部欺诈。
3. 动态权限管理
- 根据用户角色、部门、时间(如工作日/节假日)等条件动态调整权限。
- 例如:临时工仅在项目期间拥有系统访问权,项目结束后自动回收。
4. 可审计性
- 记录所有权限变更和敏感操作,便于追溯和合规审查。
- 例如:日志需包含操作时间、用户ID、操作内容及结果。
二、核心功能模块
1. 用户身份认证
- 多因素认证:结合密码、短信验证码、生物识别(如指纹/人脸)提升安全性。
- 单点登录(SSO):支持企业微信、钉钉等第三方账号集成,简化登录流程。
2. 角色与权限定义
- 角色模板:预设管理员、采购员、仓库管理员等角色,分配默认权限。
- 自定义权限:支持按模块(如商品管理、订单处理)或操作(查看、编辑、删除)细粒度授权。
- 权限继承:子角色自动继承父角色权限,减少重复配置。
3. 权限分配与审批
- 可视化界面:通过树形结构或表格展示权限列表,支持勾选式分配。
- 审批流程:权限变更需经上级审批,确保合规性。
- 临时权限:支持按时间段(如1天)或任务(如促销活动)分配临时权限。
4. 权限审计与日志
- 操作日志:记录用户登录、权限变更、数据修改等行为。
- 异常检测:通过AI分析日志,识别异常操作(如非工作时间频繁登录)。
- 报表导出:支持按时间、用户、操作类型生成审计报告。
三、技术实现方案
1. RBAC模型(基于角色的访问控制)
- 核心结构:用户(User)→ 角色(Role)→ 权限(Permission)。
- 优势:简化权限管理,适合企业级应用。
- 扩展:结合ABAC(基于属性的访问控制),支持动态权限判断(如根据用户部门、时间等属性)。
2. 权限数据存储
- 数据库设计:
- 用户表(User):存储用户ID、姓名、部门等。
- 角色表(Role):存储角色ID、名称、描述。
- 权限表(Permission):存储权限ID、名称、资源路径(如`/order/edit`)。
- 用户-角色关联表(User_Role):建立用户与角色的多对多关系。
- 角色-权限关联表(Role_Permission):建立角色与权限的多对多关系。
3. API权限控制
- 接口鉴权:在API网关或后端服务中校验用户权限,拒绝无权访问。
- JWT令牌:在Token中嵌入角色信息,减少数据库查询。
- 注解式控制:使用Spring Security等框架,通过注解(如`@PreAuthorize("hasRole(ADMIN)")`)保护方法。
4. 前端权限控制
- 菜单动态渲染:根据用户权限显示/隐藏菜单项。
- 按钮级控制:禁用无权操作的按钮(如“删除”按钮)。
- 路由守卫:在Vue/React中拦截未授权的页面访问。
四、安全策略
1. 数据加密
- 敏感权限数据(如密码、Token)使用AES或RSA加密存储。
- 传输层启用HTTPS,防止中间人攻击。
2. 会话管理
- 设置合理的会话超时时间(如30分钟无操作自动登出)。
- 支持多设备登录限制,防止账号盗用。
3. 防暴力破解
- 登录失败次数限制(如5次后锁定账号)。
- 验证码机制(如短信/图片验证码)。
4. 合规性要求
- 符合GDPR、等保2.0等法规,确保用户数据隐私。
- 定期进行安全渗透测试,修复漏洞。
五、持续优化
1. 权限复盘机制
- 定期审查权限分配是否合理,清理长期未使用的账号。
- 根据业务变化调整角色权限(如新增“供应链金融”角色)。
2. 用户反馈收集
- 通过问卷或工单系统收集用户对权限管理的意见。
- 优化权限申请流程(如自助申请+自动审批)。
3. 技术演进
- 引入零信任架构(Zero Trust),默认不信任任何内部/外部请求。
- 结合AI实现动态权限调整(如根据用户行为模式自动调整权限)。
示例场景
- 场景:采购员小张需要查看某供应商的商品库存,但无权修改价格。
- 实现:
1. 系统通过RBAC模型验证小张的角色为“采购员”。
2. 权限引擎检查“采购员”角色是否包含“查看库存”权限(是),但无“修改价格”权限。
3. 前端仅显示库存数据,隐藏价格修改按钮。
4. 所有操作记录在审计日志中,供后续追溯。
通过以上设计,美菜生鲜系统可实现灵活、安全、可追溯的用户权限管理,支撑生鲜电商业务的高效运转。