打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用php实现权限管理模块
userphoto

2017.08.31

关注

在说权限管理模块前,应该先知道权限管理模块要有哪些功能:

  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框架):

 1 function __construct(){     2     //假设管理员编号为99 3     $manage_user_id = 99; 4     //获取要访问的控制器和方法 5     $controlName = $this->uri->segment(1); 6     $methodName = $this->uri->segment(2); 7     //获取该用户所拥有的控制器和方法 8     $sql = 'select d.control_name,e.method_name from  9         authority_user_role as a,10         authority_role as b,11         authority_role_controlmethod as c,12         authority_control as d,13         authority_method as e14         where15         a.user_id={$manage_user_id} and16         a.role_id=b.id and17         b.id=c.role_id and18         c.control_id=d.id and19         c.method_id=e.id;';20     $authorityData = $this->db->query($sql)->result_array();21     //判断有没有权限22     $returnData = $this->judgeAuthority($controlName, $methodName, $authorityData);23     if($returnData['responseCode'] == '101'){24         echo '可以访问,就不die()了';25     }($returnData['responseCode'] == '100'){26         echo '没有权限';27         die();28     }29 30 }31 private function judgeAuthority($controlName, $methodName, $authorityData){32     foreach ($authorityData as $k => $v) {33         if($v['control_name'] == $controlName && $v['method_name'] == $methodName){34             $responseData = array('responseCode'=>'101', 'responseMessage'=>'可以访问');35             return $responseData;36             break;37         }38     }39     $responseData = array('responseCode'=>'100', 'responseMessage'=>'没有权限');40     return $responseData;41 }

 


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Dcdiag Windows 2008 的域控制器上的 NCSecDesc 测试失败
权限系统的设计
小区门禁管理系统解决方案
J2EE企业级开发学习笔记(3)
MongoDB权限控制(6)
Moodle插件开发笔记5:基础知识五
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服