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

  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实现权限管理模块的更多相关文章

  1. C# EasyUI树形结构权限管理模块

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节和大家探讨下C#使用EasyUI树形结构/Tree构 ...

  2. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. Yii框架中使用SRBAC作为权限管理模块时遇到的问题

    Yii框架中使用SRBAC作为权限管理模块时遇到的问题   看到Yii中提供RBAC的插件,SRBAC,就想用用. 结果按照手册上的安装办法,整来整去,安装完了,可就是进不了权限管理界面. 最后想到, ...

  4. OA 办公自动化系统:权限管理模块的实现原理思路

    OA系统分有许多的模块,如系统管理模块.等一些比较高级的业务操作.此类业务是不允许让普通员工来操作的,思路如下: 给系统添加角色表,每个用户对应一个角色,每个角色可以拥有多个权限, 如下:创建权限表( ...

  5. YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

    0x01 前言 srbac的原理: YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢.我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和 ...

  6. RBAC权限管理

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联. 简单地说,一个用户拥有若干角色,每一个角色拥有若干权限. 这样,就构造成“用户-角 ...

  7. 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】

    一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...

  8. RBAC用户权限管理数据库设计

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  9. RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...

随机推荐

  1. hiveserver2 后台运行

    启动hivemetastore  hive --service metastore 启动hiveserver2   hive --service  hiveserver2 beeline !conne ...

  2. nginx install in centos

    1.在nginx下载rpm包,如nginx-release-centos-6-0.el6.ngx.noarch.rpm ,并安装(可用yum直接安装): 注:rpm包只是提供一个nginx源. 2.使 ...

  3. 工作“触雷”经历与总结--记博弈论的应用

    工作三年,职场受挫.一些值得说或者不值得说的事情,也懒得去记录.无奈,更多时无奈.内心的骄傲或者自负也不值得炫耀.天生骄傲,或者也只是自身内心的呐喊.毕竟,骄傲的人也不会说出来,搞的好像是有点似得. ...

  4. 初学java,遇到的陌生词语(1)

    字节码文件:不包含硬件信息,完全与硬件平台无关,因此,无法直接由操作系统来运行. Java应用程序的执行过程:代码装入.代码检验.代码执行. 1.代码装入:由类装配器完成,装入程序运行时所需的所有源代 ...

  5. JS实现div块的拖放,调换位置

    主要是HTML5 的拖放(Drag 和 Drop) 例子(不需要对div设置ID): <!DOCTYPE HTML> <html> <head> <scrip ...

  6. [翻译][MVC 5 + EF 6] 8:更新相关数据

    原文:Updating Related Data with the Entity Framework in an ASP.NET MVC Application 1.定制Course的Create和E ...

  7. 踩过的坑系列之InputStream.read(byte[])方法

    项目之前都是好好的,最近现场那边出现一个问题,报错不是合法的json字符串,这个json字符串是通过http请求访问获得的. 通过直接在浏览器上直接访问http这个请求,发现返回的json也是完全正确 ...

  8. PLINQ 简介

    PLINQ和LINQ的语法基本是差不多的,PLINQ该如何实现并行 var query = from item in source.AsParallel() select item; 一个简单的AsP ...

  9. C++中const修饰基本数据类型、指针、引用、对象

    const修饰基本数据类型 #include <iostream> using namespace std; void main(){ const int a = 1; const cha ...

  10. WPF MVVM 中怎样在ViewModel总打开的对话框在窗体之前

    今天在WPF的项目中,写打印插件,在ViewModel中对需要弹出打印对话框,而对话框如果没有Owner所属的时候经常会被当前应用程序遮住,导致我都不知道到底弹出来没有! 参照:http://www. ...