RBAC权限管理系统的设计

时间:2021-04-29 15:18:48

        最近在做一个权限管理系统,导师建议做成基于RBAC的权限管理,并要求实现可移植性。经过几天查资料我初步完成了数据库的设计,需要的实体有用户,用户组,角色,权限,用户跟用户组是多对多的关系,用户组可以根据部门,职位或工作性质划分。用户的权限是通过角色实现分配权限,用户和权限之间的关系时多对多关系,但是考虑到一个用户可能只是多出来一,两项权限,如果设计成只能通过角色获得权限会出现角色记录太多,冗余等现象,所以可以为用户直接分配权限,这样用户和权限之间也要有个多对多的关系表。角色和权限之间是多对多关系也要映射一个关系表。至于权限我是这样理解的,权限是定义在某种资源上的某种功能操作,单独的资源如果不联系功能操作则构不成权限,比如菜单是一种资源,对菜单资源可以有两种功能一种是能打开一种是不能,把资源和功能操作联系起来就够成一项权限,再比如数据库表可以有增删改查的操作。

 

        根据上述理解,数据库表我设计的是:用户表,角色表,权限表,资源表,功能操作表,用户组表,用户角色关联表,角色权限关联表,用户权限关联表,用户组角色关联表。其中用户组表和角色表都是可继承的。

 

        我把我的想法跟导师讲过之后,但是给我的意见是资源包括菜单,文件,页面,链接,按钮和数据库表,在这其中出数据库表以外其他的设计权限可以使可见和不可见,但是数据库表的权限就不是那么容易控制,比如说数据表是谁创建的,谁有修改,查看权限。在实际应用中有的应用系统要求同部门可以查看和修改数据表,有的要求只能查看但不能修改。还有是对数据库的读取深度也要很好的控制。做到现在我对权限管理这部门还没有很好的设计思路,请高人指点,还有如何把系统设计成组件实现可移植性完全没有想法,希望大神们指点一二。在此先谢谢大家。