php项目开发中的权限认证rbac对比auth

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

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171212A10D4B00?refer=cp_1026

扫码关注云+社区