使用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部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...
随机推荐
- 获取XML配置数据
XML结构: <Setting> <BIG> <tdHead> <td TdName="序号" TdWidth=&quo ...
- java 网络API访问 web 站点
package cn.magicdu.think.socket; import java.io.BufferedReader; import java.io.InputStreamReader; im ...
- WindowManage与Window的在Activity的一点小应用
super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN ...
- Opencv——播放视频(带滚动条)
#include"highgui.h" #include"cv.h" ; CvCapture* g_capture = NULL; void onTrackba ...
- Golden32 别名时中文 报ORA-00911: invalid character错误
查询数据库软件我一般用两个:PL SQL和golden32:使用golden32-之前使用的时候别名为中文是没有任何问题:直到我想将PL SQL汉化(使用中文包chinese.exe),汉化完后再次查 ...
- 崩溃信息:Message from debugger: Terminated due to signal 9
是因为你在调试的时候主动了结束了程度,如上滑结束了程序
- 11_Servlet的一些细节知识点
[Servlet的细节知识点1-----一个Servlet映射到多个URL] 同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servl ...
- "const wchar_t is incompatible with parameter of type "LPCSTR"
MessageBox(NULL, L"TEST", L"TEST", MB_OK); You may get this error if you "U ...
- USB初始化
//USB初始化void CFileManagerDlg::usbinit(){ #define BUFFER_SIZE 64 struct usb_bus *bus; struct usb_devi ...
- 进程,线程(thread)
每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段, 它可以在程序里独立执行.也可把它理解为代码运行 ...