一、前言
几乎在任何一个系统中,都离不开权限的设计,权限设计 = 功能权限 + 数据权限,而功能权限,在业界常常是基于RBAC(Role-Based Access Control)的一套方案。而数据权限,则根据不同的业务场景,则权限却不尽相同,应该根据具体的场景巧妙设计; 且必须在项目开始时进行设计,不像功能权限一样,在项目结束的时候在追加。
注:更细还可以加入字段权限
1.1 权限类型
【功能权限】:能做什么的问题,如增加产品。
【数据权限】:能看到哪些数据的问题,如查看本人的所有订单。
【字段权限】:能看到哪些信息的问题,如供应商账户,看不到角色、 部门等信息。
二、数据权限设计
2.1 应用场景
订单,可以由本人查看
销售单,可以由本人或上级领导查看
销售单,销售人员可以查看自己的,销售经理只查看 销售金额大于100,000的。
2.2 数据权限设计分析
数据权限跟功能权限有非常大的不同,颗粒度非常小。贯穿于整个项目的开发周期中,无法像功能权限一样在项目要结尾的时候追加。数据权限做不到组件级别,必须在项目设计阶段就已经规划好。之前看网上相同有人想基于SPRING切面的原理去实现数据权限,这样就能够做到了低侵入、低耦合,想法非常好。但是现实非常骨感,这样做使整个应用系统效率大减折扣,相同对数据权限的控制策略也非常不灵活
2.3 SQL语句可扩展,数据权限设计分析
数据权限往往作为功能权限的高级行为。能