使用php实现权限管理模块
2016-04-08 11:41
645 查看
在说权限管理模块前,应该先知道权限管理模块要有哪些功能:
1、用户只能访问,指定的控制器,指定的方法
2、用户可以存在于多个用户组里
3、用户组可以选择,指定的控制器,指定的方法
4、后台可以添加控制器和方法
好了,需求知道了那么设计数据库,如下图:
从图中可知主要表之间的关系
authority_user与authority_role,多对多
authority_role与authority_control,多对多
authority_role与authority_method,多对多
authority_control与authority_method,1对多
数据表设计好,那就应该写程序判断了(php程序)。判断思路如下:
1、获取用户要访问的控制器和方法。
2、从数据库中获取,该用户拥有的控制器和方法。
3、判断要访问的控制器和方法,是否存在用户拥有的控制器和方法里。
思路有了,那就写个demo程序测试下(php程序的ci框架):
当然了,这个权限管理模块是在没参考的情况下完成的,如果有发现不对劲,请帮忙回复指出。
权限管理模块的demo:http://pan.baidu.com/s/1slyzXsp
1、用户只能访问,指定的控制器,指定的方法
2、用户可以存在于多个用户组里
3、用户组可以选择,指定的控制器,指定的方法
4、后台可以添加控制器和方法
好了,需求知道了那么设计数据库,如下图:
从图中可知主要表之间的关系
authority_user与authority_role,多对多
authority_role与authority_control,多对多
authority_role与authority_method,多对多
authority_control与authority_method,1对多
数据表设计好,那就应该写程序判断了(php程序)。判断思路如下:
1、获取用户要访问的控制器和方法。
2、从数据库中获取,该用户拥有的控制器和方法。
3、判断要访问的控制器和方法,是否存在用户拥有的控制器和方法里。
思路有了,那就写个demo程序测试下(php程序的ci框架):
function __construct(){ //假设管理员编号为99 $manage_user_id = 99; //获取要访问的控制器和方法 $controlName = $this->uri->segment(1); $methodName = $this->uri->segment(2); //获取该用户所拥有的控制器和方法 $sql = 'select d.control_name,e.method_name from authority_user_role as a, authority_role as b, authority_role_controlmethod as c, authority_control as d, authority_method as e where a.user_id={$manage_user_id} and a.role_id=b.id and b.id=c.role_id and c.control_id=d.id and c.method_id=e.id;'; $authorityData = $this->db->query($sql)->result_array(); //判断有没有权限 $returnData = $this->judgeAuthority($controlName, $methodName, $authorityData); if($returnData['responseCode'] == '101'){ echo '可以访问,就不die()了'; }($returnData['responseCode'] == '100'){ echo '没有权限'; die(); } } private function judgeAuthority($controlName, $methodName, $authorityData){ foreach ($authorityData as $k => $v) { if($v['control_name'] == $controlName && $v['method_name'] == $methodName){ $responseData = array('responseCode'=>'101', 'responseMessage'=>'可以访问'); return $responseData; break; } } $responseData = array('responseCode'=>'100', 'responseMessage'=>'没有权限'); return $responseData; }
当然了,这个权限管理模块是在没参考的情况下完成的,如果有发现不对劲,请帮忙回复指出。
权限管理模块的demo:http://pan.baidu.com/s/1slyzXsp
相关文章推荐
- php 502 bad gateway
- php 比较字符串或文章的相似度
- [置顶] PHP获取日期为星期几的代码
- NTP协议
- 【干货】PHP中的防御性编程
- PHP如何实现文件上传
- Yii2使用beforeLogout事件更新用户登录信息
- php图片压缩剪裁
- 利用yum方式安装php7
- Eclipse + CodeIgniter 解决PHP函数代码不能自动提示问题
- ThinkPHP 3.1.2 查询方式的一般使用1
- ThinkPHP 3.1.2 查询方式的一般使用1
- ThinkPHP 3.1.2 查询方式的一般使用1
- 一步步入门编写PHP扩展
- 每天laravel-20160709|CallEvent
- 每天laravel-20160709|CallEvent
- 自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')
- php将字符首字母大小写转换
- PHP实现简单实用的分页类代码
- [置顶] php编写冒泡排序