使用php实现权限管理模块
在说权限管理模块前,应该先知道权限管理模块要有哪些功能:
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实现权限管理模块的更多相关文章
- C# EasyUI树形结构权限管理模块
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节和大家探讨下C#使用EasyUI树形结构/Tree构 ...
- Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Yii框架中使用SRBAC作为权限管理模块时遇到的问题
Yii框架中使用SRBAC作为权限管理模块时遇到的问题 看到Yii中提供RBAC的插件,SRBAC,就想用用. 结果按照手册上的安装办法,整来整去,安装完了,可就是进不了权限管理界面. 最后想到, ...
- OA 办公自动化系统:权限管理模块的实现原理思路
OA系统分有许多的模块,如系统管理模块.等一些比较高级的业务操作.此类业务是不允许让普通员工来操作的,思路如下: 给系统添加角色表,每个用户对应一个角色,每个角色可以拥有多个权限, 如下:创建权限表( ...
- YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)
0x01 前言 srbac的原理: YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢.我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和 ...
- RBAC权限管理
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联. 简单地说,一个用户拥有若干角色,每一个角色拥有若干权限. 这样,就构造成“用户-角 ...
- 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】
一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...
- RBAC用户权限管理数据库设计
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分
RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...
随机推荐
- Python(2.7.6) 标准日志模块 - Logging Handler
Python 标准日志模块使用 Handler 控制日志消息写到不同的目的地,如文件.流.邮件.socket 等.除了StreamHandler. FileHandler 和 NullHandler ...
- 无责任比较thrift vs protocol buffers
http://blog.csdn.net/socoolfj/article/details/3855007 最新版本的Hadoop代码中已经默认了Protocol buffer作为RPC的默认实现,原 ...
- Java parseInt_使用此方法得到的原始数据类型的一个特定的字符串
Java parseInt解释加方法示例 使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个 java parseInt ...
- 元素exist/present/visible(vanish)/enable的区别
一.判断元素exist/present/visible(vanish)/enable的区别: 1.首先,从selenium代码上来区别: 1)exist/present表示元素个数是否大于0 Li ...
- JavaScript DOM编程艺术 - 读书笔记1-3章
1.JavaScript语法 准备工作 一个普通的文本编辑器,一个Web浏览器. JavaScript代码必须通过Html文档才能执行,第一种方式是将JavaScript代码放到文档<head& ...
- ZOJ 3211 Dream City(DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3374 题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上 ...
- C语言 goto, return等跳转
C语言 goto, return等跳转 Please don't fall into the trap of believing that I am terribly dogmatical about ...
- Hyper-V 测试
云平台的虚拟服务器,基本上没有免费的(试用时间基本上都是1个月),按月收费最低的套餐(1个CPU核心.512内存)一般都是将近100元 所以索性还是自己搭建一个技术测试环境吧 上学的时候一直用的是VM ...
- CentOS下Apache+SVN+LDAP的安装与配置
上班接近4个月了,在公司做配置管理工程师,主要是在Linux下对公司的源代码以及项目发布进行管理.4个月接触了好多新知识,也对各种工具的集成使用搞得云里来雾里去的,所以打算自己搭建一套环境,进行测试. ...
- A Case for Flash Memory SSD in Enterprise Database Applications
通过分析固态硬盘的特性对数据库中不同对象,如:表,索引,回滚段,重做日志等的应用进行具体研究,最后将数据库中不同的对象进行区别应用