------------------------------------------------------------------------------------------------------- RBAC(Role Based Access Control),意为基于角色的访问控制,这里用户不再拥有单独权限,而是与角色相关联,通过赋予角色权限,那么该用户也就拥
-------------------------------------------------------------------------------------------------------
RBAC(Role Based Access Control),意为基于角色的访问控制,这里用户不再拥有单独权限,而是与角色相关联,通过赋予角色权限,那么该用户也就拥有了这个角色的权限; 这里的角色可以也理解为用户组。
立即学习“PHP免费学习笔记(深入)”;
SHOPEX仿M18紫色版 ,适合综合商城,服饰商城.化妆品商城等使用.程序基于SHOPEX4.8.5 最新版制作. 安装方法:1.解压上传程序至网站根目录.. 访问:域名/bak.(用户名:admin 密码:123456)2.进入帝国备份王后,配置数据库信息.选择-www.taomoban.net目录.还原数据库.3.修改FTP目录下的config/config.php 数据库连接信息.4.登陆
0
权限控制位置:在公共的控制器类的构造方法内,这样子类均需进行权限验证; 登录注册所在控制器可以不用继承,以CI框架为例:包含登录的控制器直接继承CI_Controller, 包含其他方法的控制器继承MY_Controller进行权限控制。
立即学习“PHP免费学习笔记(深入)”;
自定义的RBAC类,最终返回组装的数组格式,参考如下:
<span>$access_list</span> = <span>array</span><span>( </span>'auth'=><span>array</span><span>( </span>'index'=><span>array</span><span>( [</span>0]=>'index',<span> [</span>1]=>'add',<span> ), </span>'user'=><span>array</span><span>( [</span>0]=>'index',<span> [</span>1]=>'add',<span> [</span>2]=>'delete',<span> )</span>,<span> )</span>,<span> );</span>
立即学习“PHP免费学习笔记(深入)”;
三步骤 实现RBAC =>
一,需要的5张数据表如下:
用户表
角色表(用户组)
用户和角色关联表(便于存单个用户存多个角色; 否则要在用户表存roleid,多个值)
权限表(节点表:角色id,节点id,节点pid)
角色与权限关联表
(4张表实现的RABC是采用的单角色思路,可以省略掉“用户和角色关联表”,将角色id直接存入用户表,可以省掉一些代码量)
立即学习“PHP免费学习笔记(深入)”;
二,通过用户的id获取所有的节点权限:
1. 通过用户的id将用户的角色id查询出来,function getRoleId(){}
2. 通过用户的角色id来获取所有的节点id,function getNodeId(){}
3. 通过所有的节点id来获取节点名称,组装数组(也可存入session),function getNodes(){} function getNodeName(){}
立即学习“PHP免费学习笔记(深入)”;
三,验证权限:
通过$_GET['c']和$_GET['m']与$access_list['auth']中的进行对比,如果存在,拥有权限,否则无权限,进行踢出; 这里用到了函数array_key_exists()。
强调:登录退出在非公共的控制器内,不参与权限控制。
立即学习“PHP免费学习笔记(深入)”;
如果有使用了Ajax,那么同样可以验证,代码局部如下:
<span>/**<br />|---------------------------------------------<br />|开启权限控制方法(以CI框架为例)<br />|@黑眼诗人 <www.farwish.com><br />|---------------------------------------------<br />*/<br />protected</span> <span>function</span><span> openCheck()
{
</span><span>$this</span>->load->library('rbac'); <span>//</span><span>加载rbac类</span>
<span>if</span>( ! <span>$this</span>->rbac->access_check(<span>$id</span>)) <span>//</span><span>rbac中access_check方法检测权限</span><span>
{
</span><span>if</span>(<span>isset</span>(<span>$_SERVER</span>['HTTP_X_REQUESTED_WITH']) && <span>strtolower</span>(<span>$_SERVER</span>['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'<span>)
{
</span><span>echo</span> '您没有权限!';<span>exit</span>; <span>//</span><span>Ajax请求返回值</span>
<span> }
</span><span>else</span><span>
{
redirect(</span>'admin/show_notice'); <span>//</span><span>重定向至提示页</span>
<span> }
}
}</span>你还可以在上述代码中加入判断,如:超级管理员角色不受限制,这样更符合权限系统的需求。
立即学习“PHP免费学习笔记(深入)”;
Link: http://www.cnblogs.com/farwish/p/3886805.html
@黑眼诗人
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号