权限管理基本是作为网站的标配了;

除非是像博客这类个人使用的;否则权限管理的重要性不言而喻;

今个就来写写auth权限管理;

thinkphp已经内置了auth权限类位于:/ThinkPHP/Library/Think/Auth.class.php

执行里面的sql生成3张表auth_rule、auth_group、auth_group_access;

然后自己再建一张users表;当然起其他的名字也是可以的;不过是需要在配置项中说明;

先对各表的作用简单介绍;

users:用户表;这个不废话;

auth_group:用户组表;比如说超级管理员组、普通管理员组、编辑等等;同时记录每个管理组有哪些权限;

auth_group_access:用户、群组关联表;比如说用户1属于超级管理员、用户2属于普通管理员和编辑;

auth_rule:权限表;具体的每条权限是什么;

如果还没看过权限管理;那建议先看源代码;透彻学习一样东西;最好的方法就是研究源代码;

这里重点不是要讲auth的原理;而是要给一个auth的demo;

git源代码:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

1:先下载项目并安装;

完成后分别点超级管理员登录和文章管理员登录;

你会发现他们的权限是不同的;看到的后台菜单是不一样的;

2:菜单管理

为了控制每种管理员都能看到那些菜单;所以要有菜单的管理;

操作的是demo中的admin_nav表

3:权限管理

具体的每项权限的名称和内容;我这里一般都是和菜单对应的;

但是会比菜单管理多出一些;对比两张图即可看出来;多出来的一般都是些对菜单的增删改;

操作的是demo中的auth_rule表;

4:用户组管理

这里就是增加管理组;并为每个管理组分配权限了;选中的就表示有权限看到或者操作了;

5:管理员列表

把所有的管理员都列出来;可以添加管理员或者修改管理员的管理组;

当构建好这样一个结构后;权限管理简单其实只需要AdminBaseController.class.php中如下一段代码就完成了;

/Application/Common/Controller/AdminBaseController.class.php

1
2
3
4
5
6
$auth=new \Think\Auth();
$rule_name=MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME;
$result=$auth->check($rule_name,$_SESSION['user']['id']);
if(!$result){
    $this->error('您没有权限访问');
}

这也是在 thinkphp的目录结构设计经验总结  中讲述 /Application/Common/Controller中建各种BaseController的原因;

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com

thinkphp整合系列之rbac的升级版auth权限管理系统demo的更多相关文章

  1. thinkphp整合系列之支付宝RSA加密方式

    thinkphp整合系列之支付宝RSA加密方式上篇博客写的是MD5加密方式:thinkphp整合系列之支付宝MD5加密方式扫码支付http://baijunyao.com/article/75 但是呢 ...

  2. thinkphp整合系列之极验滑动验证码

    对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...

  3. thinkphp整合系列之phpexcel生成生成excel文件

    在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...

  4. thinkphp整合系列之短信验证码、订单通知

    现在这个短信通知泛滥的年代:应用如果没有个短信注册:你都不敢说你是搞开发的: 这个验证码搞起来是不难的:但是如果刚接触也是有点不知从哪下手的迷茫: 先讲下概念: 要想发送验证码:需要至少三项:appi ...

  5. thinkphp整合系列之phpqrcode生成二维码

    php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...

  6. thinkphp整合系列之phpexcel导入excel数据

    一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...

  7. thinkphp整合系列之微信公众号支付

    <?phperror_reporting(E_ALL);ini_set('display_errors', '1');// 定义时区ini_set('date.timezone','Asia/S ...

  8. thinkphp整合系列之极验滑动验证码geetest

    给一个央企做官网,登录模块用的thinkphp验证码类.但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就 ...

  9. 项目:rbac 基于角色的权限管理系统;

    - 简单示意流程图 - RBAC分析: - 基于角色的权限管理: - 权限等于用户可以访问的URL: - 通过限制URL来限制权限: - RBAC表结构组成: from django.db impor ...

随机推荐

  1. 怎么取消ie浏览器body与html的间隙

    在css文件第一行定义全局样式,可以消除html标签默认间隙*{margin:0;padding:0;}

  2. JavaScript(10)——Ajax以及跨域处理

    Ajax以及跨域处理 哈哈哈,终于写到最后一章了.不过也还没有结束,说,不要为了学习而学习,恩.我是为了好好学习而学习呀.哈哈哈.正在尝试爱上代码,虽然有一丢丢的难,不过,我相信我会的! [Ajax] ...

  3. oracle日期的处理

    字符长转换为日期,有两种写法 SELECT date'2016-06-03' FROM dualselect to_date('2016-06-03','yyyy-mm-dd') from dual ...

  4. RLE行程长度编码压缩算法

    在看emWIN的时候看到一个图片压缩的算法可以有效的对二值图(简单的2中颜色或者更多)进行压缩,压缩的效果可以节省空间而且不丢失信息! 特点 一种压缩过的位图文件格式,RLE压缩方案是一种极其成熟的压 ...

  5. windows下更新python报错permission denied

    注意退出所有python进程,可能是在使用中导致权限不足以删除

  6. hdu_2842_Chinese Rings(矩阵快速幂)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题意:解开第k个环需要先解开前(k-2)个环,并留有第(k-1)环.问解开n环最少需要几步. 题 ...

  7. hdu_5707_Combine String("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5707 题意:给你三个字符串 a,b,c,问你 c能否拆成a,b,a,b串的每一个字符在c中不能变 题解 ...

  8. [转]Zend Studio 文件头和方法注释设置

    在zend studio ide 7.1 中选择窗口->首选项->PHP–>编辑器 –>模板 –>新建然后添加 funinfo或fileinfo 模板代码根据下边定义的C ...

  9. FirstOrDefault()的重载方法

    FirstOrDefault方法的使用总结: 现有一集合对象list, 其中集合对象调用FirstOrDefault()方法, list.FirstOrDefault()返回集合中第一个元素, 若集合 ...

  10. CSS3的一些前缀

    为了兼容多个浏览器,css3通常前面加一大堆前缀 -webkit  /*为Chrome/Safari*/-moz  /*为Firefox*/-ms   /*为IE*/-o  /*为Opera*/ -w ...