Thinkphp 5auth权限设置以及实现
Posted 程镜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp 5auth权限设置以及实现相关的知识,希望对你有一定的参考价值。
1.将auth类下载好 放置目录: extend\\auth\\auth.php
2.将类中的SQL语句执行,可以在数据库中创建3张表 auth_group(用户组表) auth_rule(权限规则表) auth_group_access(用户与用户组关联表)
3.我想给规则 添加一个级别关系(类似于无限极分类) auth_rule(权限规则表) 中添加3个字段 pid(父级id ,0为顶级权限) level(级别) sort(排序),如下图
4,首先 自己创建管理员表,比如叫admin表,增删改查 自己去正常设计,group字段为所属用户组
5.auth_group用户组的 增删改查 也自己去制作一下,id,用户组名称,状态(开启,或者关闭),规则(所对应的是规则表的id)
6.auth_rule规则表 增删改查 也自己去制作一下,id,name(控制器/方法),title(规则名称 ) status状态(开启,或者关闭),
7. 在添加用户的时候 给用户选择 所属用户组, uid(对应的是用户id) group_id(对应的是用户所属用户组的id),这样就关联起来了
8.把会员登陆功能做好,登陆成功设置session(\'id\'),将当前登陆会员ID存在session中
9.最关键的的一步,就是使用auth类进行验证,在common.php这个公共页面中 使用
1 <?php 2 namespace app\\admin\\controller; 3 use think\\Controller; 4 use think\\Request; 5 use auth\\Auth; //引入suth类 6 class Common extends Controller 7 { 8 public function _initialize(){ 9 //初始化判断用户是否已经登陆 10 if(!session(\'uname\')){ 11 $this->error(\'请先登陆系统!\',\'login/index\'); 12 } 13 14 15 //获得当前页面的控制器 / 方法 16 $request=Request::instance(); 17 $moudle=$request->module(); //获取当前控制器名称 18 $con=$request->controller(); //获取当前控制器名称 19 $action=$request->action(); //获取当前方法名称 20 $this->assign(array( 21 \'con\'=>$con, 22 \'action\'=>$action, 23 )); 24 25 $rules=$con.\'/\'.$action; //组合 控制器/方法 26 $auth=new Auth(); //实例化auth类 27 $notCheck=array(\'Index/index\'); //都可以访问的页面 28 if(session(\'uid\')!=1){ //不是超级管理员才进行权限判断 29 if(!in_array($rules,$notCheck)){ // 是否在开放权限里面 30 if(!$auth->check($rules,session(\'uid\'))){ // 第一个参数 控制/方法 第二个参数:当前登陆会员的id 31 $this->error(\'没有权限\',\'index/index\'); 32 }; 33 } 34 } 35 36 37 38 39 }
最终展示;
以上是关于Thinkphp 5auth权限设置以及实现的主要内容,如果未能解决你的问题,请参考以下文章
基于JAVA SSM springboot实现的抗疫物质信息管理系统(《精品毕设》源码+sql+论文)主要功能:用户区域物质类型物质详情物质申请和审核以及我的申请和通知公告以及灵活控制菜单权限(代码片