如何设计一个权限管理模块?

 

我们每天都在使用各种各样的办公自动化系统,也叫OA、ERP系统。不同的用户登录能看到的菜单和数据资源都不一样。

比如,管理员登入财务系统,能看见员工模块,员工登录就看不见,这就是菜单权限;员工登录财务系统,只能看见自己的工资明细,却看不见别人的,这就是数据权限。

那么如何做一个实用的权限模块呢?

我们来设计三张表,用户表、用户权限表、资源表。

如何设计一个权限管理模块?_第1张图片

 

用户表存放账号登录信息,资源表存放菜单和按钮资源,用户权限表存放用户ID和资源ID的关联关系。这样就能表示一个用户拥有哪些资源了。

哈哈,上面实现资源权限是不是很简单了,那么如何将数据权限加入进去呢?

这里我们引入一个概念:组织结构,可以将一个部门、一个分组、一个用户看成一个组织,组织之间是具备层级关系的。

 

如何设计一个权限管理模块?_第2张图片

我们要用这个组织结构来划分用户数据权限。上图中,admin的组织结构编号为001,A部门就定义为001001,B部门定义为001001001,A组就为001001001001,B组就为001001001002,以此类推,给每一个组织定好编号,根据组织结构,每一个用户都会在组织里,每一条数据都可以跟组织结构关联起来。

例如:财务人员录入员工工资明细,财务人员的组织结构肯定高于员工,通过组织结构编号就能模糊查询出员工信息,然后给员工录入数据;用户登录之后,可以通过组织结构编号查询属于自己的数据权限。所以编号也不是随便定义的,要有一定规律。

基于组织结构,我们的权限模块基础表,就可以分为,组织结构表、用户表、用户权限表、资源表。

 

如何设计一个权限管理模块?_第3张图片

注意:用户表属于组织结构,要新增组织结构ID作为外键关联,团队、部门、小组都这样关联起来,就可以实现数据权限了。

运用组织结构的设计模式,基本可以解决OA、ERP等自动化办公系统的权限管理。

 

更多推送文章请关注公众号:如何设计一个权限管理模块?_第4张图片

 

你可能感兴趣的:(编程思想)