后台产品系列2-数据权限的分析与设计

蛰伏已久 蛰伏已久 2018-01-10

绝大部分内部管理系统都会对数据的操作进行一定的限制,而不是单纯的把所有数据都共享出来,特别当涉及到一些机密的商业数据或者财务数据时,都需要进行严格管控。


数据权限管理那些内容:

1.行数据

   用户可以查看哪些数据,比如销售员只能操作自己的销售单,而部门领导可以操作整个部门的销售单。实现时通过读取权限信息,组织不同的SQL语句where 条件。

2.列数据

   用户可以查看某条信息的哪些字段,如财务可以查看订单的实际付款金额,而仓库人员只能看到订单的商品信息。实现时通过读取权限信息,组织SQL语句 select后列名称。 


数据权限的产品设计


场景1:某公司在全国有很多门店,每个门店的运营人员,可以查看各店的订单,运营总监可以查看所有门店的数据。


分析: 在基于RBAC的功能权限管理系统中,会创建角色(如运营),某个管理员和角色进行关联,进而获得功能权限。 现在增加数据权限有两种方式,第一种,创建一个角色,角色中除配置功能权限外,还配置数据权限,如创建一个 “北京运营”的角色,可以管理北京店订单;这种方式有个问题,如果门店有几百个,需要创建几百个角色。 第二种方式,角色中只设置功能权限,在创建管理员的时候选择角色及拥有的权限,如创建一个角色“运营”,可以管理订单,在添加管理员的时候勾选“运营”角色,并勾选“北京”以获得数据权限。



   上述权限设置中有个小点需要注意,就是拥有所有数据权限如何设置,第一种,勾选所有的门店,但是这种有个问题,当新开一个门店后,又需要更改配置;第二种,如果不选择数据权限则默认拥有所有的数据权限,这种可以解决上述问题。


场景2:某公司在全国有多个销售部门,销售总监可以查看所有的销售订单,北京销售经理可以查看北京销售部的所有销售订单,销售员可以查看本人的销售订单。


分析:在场景1中,订单一般是客户主动下单,订单来源精确到门店,而在场景2中,订单数据为后台人员主动创建,订单来源可以精确到具体管理员、部门、分公司。首先设置整个公司部门架构,然后在创建管理员的时候,选择其所属部门,这样管理员在创建订单时,订单来源即可追溯到某个管理员、其所在部门、所在分公司。在为某个管理员分配权限时,可选择所有数据、所在公司、所在部门、仅本人,如下图。




如果某个管理员存在跨部门权限, 则选择按明细设置,选择其所拥有权限的部门。



场景3:

某公司财务人员,可以查看订单付款金额、商品价格等与钱相关的数据,而仓储发货人员只可以查看订单中商品编号、商品名称、商品数量等信息。

分析:前面两个场景,都是针对行数据的权限,而场景3则是针对列数据的权限,即用户可访问的字段。可针对管理员增加一项字段权限设置,展示要控制的数据表及其字段明细,勾选查看或编辑权限。




功能权限采取RBAC模型基本上可以通用,而数据权限的设计和具体业务紧密相连,所以设计之前,还是和相关业务人员认真沟通并确认吧,以免后续返工,被程序猿哥哥们追杀.........

分享到

点赞(1)