thinkphp集成系列之rbac的升级版auth权限管理系统demo
2016-05-22 22:44
1166 查看
权限管理基本是作为网站的标配了;除非是像博客这类个人使用的;否则权限管理的重要性不言而喻;今个就来写写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-bjyadmin1:先下载项目并安装;完成后分别点超级管理员登录和文章管理员登录;你会发现他们的权限是不同的;看到的后台菜单是不一样的;
![](http://baijunyao.com/Upload/image/ueditor/20160514/1463186682405819.jpg)
2:菜单管理
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291919136306.jpg)
为了控制每种管理员都能看到那些菜单;所以要有菜单的管理;操作的是demo中的admin_nav表3:权限管理
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291929640930.jpg)
具体的每项权限的名称和内容;我这里一般都是和菜单对应的;但是会比菜单管理多出一些;对比两张图即可看出来;多出来的一般都是些对菜单的增删改;操作的是demo中的auth_rule表; 4:用户组管理
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291949928045.jpg)
这里就是增加管理组;并为每个管理组分配权限了;选中的就表示有权限看到或者操作了;
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291962384468.jpg)
5:管理员列表
![](http://baijunyao.com/Upload/image/ueditor/20160514/1463186286405414.jpg)
把所有的管理员都列出来;可以添加管理员或者修改管理员的管理组;
![](http://baijunyao.com/Upload/image/ueditor/20160514/1463186391769769.jpg)
当构建好这样一个结构后;权限管理简单其实只需要AdminBaseController.class.php中如下一段代码就完成了;/Application/Common/Controller/AdminBaseController.class.php
![](http://baijunyao.com/Upload/image/ueditor/20160514/1463186682405819.jpg)
2:菜单管理
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291919136306.jpg)
为了控制每种管理员都能看到那些菜单;所以要有菜单的管理;操作的是demo中的admin_nav表3:权限管理
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291929640930.jpg)
具体的每项权限的名称和内容;我这里一般都是和菜单对应的;但是会比菜单管理多出一些;对比两张图即可看出来;多出来的一般都是些对菜单的增删改;操作的是demo中的auth_rule表; 4:用户组管理
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291949928045.jpg)
这里就是增加管理组;并为每个管理组分配权限了;选中的就表示有权限看到或者操作了;
![](http://baijunyao.com/Upload/image/ueditor/20160504/1462291962384468.jpg)
5:管理员列表
![](http://baijunyao.com/Upload/image/ueditor/20160514/1463186286405414.jpg)
把所有的管理员都列出来;可以添加管理员或者修改管理员的管理组;
![](http://baijunyao.com/Upload/image/ueditor/20160514/1463186391769769.jpg)
当构建好这样一个结构后;权限管理简单其实只需要AdminBaseController.class.php中如下一段代码就完成了;/Application/Common/Controller/AdminBaseController.class.php
$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
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- ThinkPHP中where()使用方法详解
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- 解析thinkphp中的M()与D()方法的区别
- ThinkPHP采用模块和操作分析
- Thinkphp模板中使用自定义函数的方法
- linux下使用ThinkPHP需要注意大小写导致的问题
- ThinkPHP中FCKeditor编辑器的使用方法
- thinkphp的CURD和查询方式介绍
- THINKPHP支持YAML配置文件的设置方法
- Thinkphp中import的几个用法详细介绍
- thinkphp3.x中cookie方法的用法分析
- 浅谈thinkphp的实例化模型