权限管理基本是做为网站的标配了;php
除非是像博客这类我的使用的;不然权限管理的重要性不言而喻;git
今个就来写写auth权限管理;sql
thinkphp已经内置了auth权限类位于:/ThinkPHP/Library/Think/Auth.class.phpthinkphp
执行里面的sql生成3张表auth_rule、auth_group、auth_group_access;学习
而后本身再建一张users表;固然起其余的名字也是能够的;不过是须要在配置项中说明;网站
先对各表的做用简单介绍;this
users:用户表;这个不废话;.net
auth_group:用户组表;好比说超级管理员组、普通管理员组、编辑等等;同时记录每一个管理组有哪些权限;设计
auth_group_access:用户、群组关联表;好比说用户1属于超级管理员、用户2属于普通管理员和编辑;3d
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
$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