用户-角色-权限 授权模型
在后台管理系统访问控制中,我们比较常见的就是基于角色的访问控制。通过查询用户所拥有的角色,角色所拥有的权限,来决定该访问是否放行。如此就构成了“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。使用DBeaver展示数据结构的ER图
通过ER图,我们可以明了的理解到,角色是一定数量权限的集合,通过给用户分配不同的角色使用户获得不同的权限集。
如此这般,就比较贴近我们日常生活中的企业管理了。比如,给人事岗的用户分配人事角色,该角色可以执行用户增删等操作;给财务岗的用户分配财务角色,该角色可进行账目的增删等操作;而不是每新增一个用户,需要分配大量的权限使其可以操作。
用户-角色-权限-资源模型
接下来对“权限”进行拆分
通常在应用系统里面的权限我们把它表现为菜单的访问(页面跳转)、功能模块的操作(按钮点击),甚至页面上某个按钮、图片是否可见等等都属于权限的范畴。有些权限设计,会把功能操作作为一类,菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。
这样做的好处是,在数据结构方面,资源只需要存储资源相关的数据,操作模块只需要存储操作模块相关的数据。而不是全部冗余在权限表中。
在应用中,应用只需要给登录的用户存储sys_power表中的数据即可。将资源、按钮等信息单独在服务器内存中放一块,必要的时候进行查询,节省不必要的内存开支。