php项目开发中常用的权限管理系统,有RBAC与AUTH权限认证两种,前者RBAC是基于角色的权限管理系统,后者AUTH是基于节点的权限管理系统。
对于RBAC与AUTH权限认证权限管理的应用可以对比PHPCMS V9 与OneThink或者thinkcmf的权限管理模块。
RBAC权限认证可以给不同的用户分配给不同的角色,不同的角色享有不同的管理权限。但如果不同角色之间的管理权限有交集时,会出现分工不明的问题。而一个用户只能拥有一个角色。
而基于节点的权限管理AUTH就不会有这个问题,因为对于所有用户来说,每个操作都是一个节点,可以自由的分配每一个节点给任何一个用户,只不过,为避免rbac权限认证的问题,其实AUTH是可以先建立角色,给角色分配权限然后再给用户分配不同的角色,所以AUTH权限中还有个用户角色关联表,用来对应用户和角色的关系,最终用户通过同时享有多种角色,进而获得多个不同角色的权限。
权限认证原理不同,数据库设计时候的表自然也不同:
RBAC中数据库的基本设计需要3张表,分别为:
1、用户角色表role
id tinyint(3) unsigned 主 INDEX
name varchar(50)
status tinyint(1) unsigned 1
2、管理员表admin
id mediumint(6) unsigned 主 INDEX
role_id tinyint(3)
admin_login varchar(20) INDEX
nick_name varchar(30)
password varchar(32)
lastloginip varchar(15)
lastlogintime int(10) unsigned
real_name varchar(20)
mobile varchar(20)
3、管理员权限表role_access
role_id tinyint(3) unsigned INDEX
m char(20) INDEX
c char(20) INDEX
a char(20) INDEX
data char(30) index
AUTH中数据库的基本设计如下:
1、用户角色表role
id tinyint(3) unsigned 主 INDEX
name varchar(50)
status tinyint(1) unsigned 1
rules varchar(500)
2、管理员表admin
id mediumint(6) unsigned 主 INDEX
admin_login varchar(20) INDEX
nick_name varchar(30)
password varchar(32)
lastloginip varchar(15)
lastlogintime int(10) unsigned
real_name varchar(20)
mobile varchar(20)
3、管理员权限表role_access
role_id tinyint(3) unsigned INDEX
m char(20) INDEX
c char(20) INDEX
a char(20) INDEX
condition char(100) NOT NULL
4、用户组明细表role_admin
admin_id mediumint(6) unsigned
role_id tinyint(3) unsigned
领取专属 10元无门槛券
私享最新 技术干货