thinkphp集成系列之rbac的升级版auth权限管理系统demo

Wesley13
• 阅读 440

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

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

今个就来写写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:先下载项目并安装;

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

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

thinkphp集成系列之rbac的升级版auth权限管理系统demo

2:菜单管理

thinkphp集成系列之rbac的升级版auth权限管理系统demo

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

操作的是demo中的admin_nav表

3:权限管理

thinkphp集成系列之rbac的升级版auth权限管理系统demo

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

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

操作的是demo中的auth_rule表;

4:用户组管理

thinkphp集成系列之rbac的升级版auth权限管理系统demo

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

thinkphp集成系列之rbac的升级版auth权限管理系统demo

5:管理员列表

thinkphp集成系列之rbac的升级版auth权限管理系统demo

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

thinkphp集成系列之rbac的升级版auth权限管理系统demo

当构建好这样一个结构后;权限管理简单其实只需要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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
thinkphp3.2.3模板渲染支持三元表达式
thinkphp3.2.3模板渲染支持三元表达式{$status?'正常':'错误'}{$info'status'?$info'msg':$info'error'}注意:三元运算符中暂时不支持点语法。如下:           <divclass"modalhidefade"id'myModa
Wesley13 Wesley13
2年前
030 SSM综合练习06
1.权限操作涉及的三张表(1)用户表信息描述users!(https://oscimg.oschina.net/oscnet/a4a2b1f943cbc2db1c8ddd613e7ed00a9ae.png)sql语句:CREATETABLEusers(idVARCHAR2(32)DEFAU
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
mysql用户
1\.学会能按着需求创建一个帐号2\.知道连接字符串是什么样3\.密码密码怎么恢复mysql用户权限介绍mysql用户管理 !(https://oscimg.oschina.net/oscnet/368d3c1e00a0a9515545c2962660a27a080.png)!(https://oscimg.oschin
Stella981 Stella981
2年前
Django权限系统auth
转自:https://www.cnblogs.com/Finley/p/5575305.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2FFinley%2Fp%2F5575305.html)auth模块是Django提供的标准权限管理系统,
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这