Thinkphp中的RBAC使用详解
2017-09-24 18:39
323 查看
1.什么是RBAC:
基于角色的访问控制(Role-Based
Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。
2.Thinkphp中的RBAC:
首先是RBAC用到的五张表(其中rbac是表的前缀,可在配置文件database.php中配置):
rbac_user(用户表):
4000
br />
rbac_role(角色表)
rbac_userrole(用户角色表,存放用户和角色的关系表):
rbac_roleaccess(角色权限表,存放的角色和权限之间的关系表):
3.RBAC中的关系模型图:
实现的功能:
4.实现RBAC是的几个方法:
array_column() 返回输入数组中某个单一列的值。用于取出角色表中或其他表中的某一列的值用这个函数比较方便。
in_array() 函数搜索数组中是否存在指定的值。在编辑用户的角色的页面展示用户属于的角色时,可以用这个函数判断出用户所属角色的id,展示到页面。如下:
array_diff()比较两个数组的键值,并返回差集,array_intersect()比较两个数组的键值,并返回交集
总结:RBAC具体的流程是:根据用户登陆的信息判断用户是否有访问该页面的权限,如果没有权限可以通过超级管理员设置,过程是:先添加一个权限(页面的url),然后给角色分配权限,最后给用户分配角色的流程。
具体实现的代码可以参考慕课网的视屏:http://www.imooc.com/video/14133
基于角色的访问控制(Role-Based
Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。
2.Thinkphp中的RBAC:
首先是RBAC用到的五张表(其中rbac是表的前缀,可在配置文件database.php中配置):
rbac_user(用户表):
CREATE TABLE IF NOT EXISTS `rbac_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `email` varchar(30) NOT NULL, `is_admin` tinyint(1) NOT NULL DEFAULT '0', `status` tinyint(1) NOT NULL DEFAULT '1', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `password` varchar(50) NOT NULL, `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=113 ;<
4000
br />
rbac_role(角色表)
CREATE TABLE IF NOT EXISTS `rbac_role` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '1', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;rbac_access(权限表,存放的是页面的url):
CREATE TABLE IF NOT EXISTS `rbac_access` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL , `urls` varchar(1000) NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '1', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;
rbac_userrole(用户角色表,存放用户和角色的关系表):
CREATE TABLE IF NOT EXISTS `rbac_userrole` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `role_id` char(20) NOT NULL, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=25 ;
rbac_roleaccess(角色权限表,存放的角色和权限之间的关系表):
CREATE TABLE IF NOT EXISTS `rbac_roleaccess` ( `id` int(11) NOT NULL AUTO_INCREMENT, `role_id` int(11) NOT NULL, `access_id` char(30) NOT NULL, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
3.RBAC中的关系模型图:
实现的功能:
4.实现RBAC是的几个方法:
array_column() 返回输入数组中某个单一列的值。用于取出角色表中或其他表中的某一列的值用这个函数比较方便。
in_array() 函数搜索数组中是否存在指定的值。在编辑用户的角色的页面展示用户属于的角色时,可以用这个函数判断出用户所属角色的id,展示到页面。如下:
{if condition=" in_array($vo['id'],$role_id)"} checked {/if}
$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] //用于获取用户访问当前页面的url
array_diff()比较两个数组的键值,并返回差集,array_intersect()比较两个数组的键值,并返回交集
总结:RBAC具体的流程是:根据用户登陆的信息判断用户是否有访问该页面的权限,如果没有权限可以通过超级管理员设置,过程是:先添加一个权限(页面的url),然后给角色分配权限,最后给用户分配角色的流程。
具体实现的代码可以参考慕课网的视屏:http://www.imooc.com/video/14133
相关文章推荐
- thinkPHP中关于RBAC使用详解
- ThinkPHP中关于RBAC使用详解
- ThinkPHP中RBAC数据库详解
- thinkphp RBAC 详解
- 快速使用 Thinkphp 之三: 用easyUI搭建Rbac界面
- ThinkPHP中RBAC数据库详解
- Thinkphp中RBAC的权限控制在关的数据库详解(RBAC详解之连载1)
- ThinkPHP的RBAC(基于角色权限控制)详解(转)
- ThinkPHP的RBAC(基于角色权限控制)详解
- thinkphp RBAC 详解
- ThinkPHP分页类使用详解
- ThinkPHP分组模式下使用RBAC的方法
- THINKPHP RBAC 使用感想
- ThinkPHP的RBAC(基于角色权限控制)详解
- 史上最简单的RBAC使用说明!!! thinkphp
- ThinkPHP中RBAC数据库详解
- ThinkPHP中RBAC数据库详解
- ThinkPHP3.1.3安装rbac示例使用中出现的一些错误
- Thinkphp中RBAC的权限控制之配置文件(RBAC详解之连载3)