• 技术文章 >php框架 >ThinkPHP

    Thinkphp5中auth权限设置以及实现

    藏色散人藏色散人2020-07-27 13:23:41转载1183
    下面由thinkphp框架教程栏目给大家介绍Thinkphp5中auth权限设置以及实现,希望对需要的朋友有所帮助!

    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这个公共页面中 使用

    <?php
    namespace app\admin\controller;
    use think\Controller;
    use think\Request;
    use auth\Auth; //引入suth类
    class Common extends Controller
    {
        public function _initialize(){
          //初始化判断用户是否已经登陆
          if(!session('uname')){
              $this->error('请先登陆系统!','login/index');
            }
    
    
            //获得当前页面的控制器 / 方法
           $request=Request::instance();
           $moudle=$request->module(); //获取当前控制器名称
           $con=$request->controller(); //获取当前控制器名称
           $action=$request->action();  //获取当前方法名称
           $this->assign(array(
                   'con'=>$con,
                   'action'=>$action,
           ));
    
           $rules=$con.'/'.$action;  //组合  控制器/方法
           $auth=new Auth(); //实例化auth类
           $notCheck=array('Index/index');  //都可以访问的页面
           if(session('uid')!=1){  //不是超级管理员才进行权限判断
              if(!in_array($rules,$notCheck)){  // 是否在开放权限里面
                  if(!$auth->check($rules,session('uid'))){   // 第一个参数  控制/方法   第二个参数:当前登陆会员的id
                     $this->error('没有权限','index/index');
                   };
               }
            }
    
    
    
    
           }

    最终展示;

    以上就是Thinkphp5中auth权限设置以及实现的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:cnblogs,如有侵犯,请联系admin@php.cn删除
    专题推荐:Thinkphp5 auth
    上一篇:thinkphp缓存文件写入失败怎么办 下一篇:避雷!thinkphp整合企业号的坑
    大前端线上培训班

    相关文章推荐

    • Laravel6变化早知道—make:auth被移除• Laravel的Auth模块使用• 关于THINKPHP的AUTH权限管理• THINKPHP中的AUTH权限管理介绍

    全部评论我要评论

  • 花开,若相惜

    这个只能TP用吗?laravel能用吗?

    2020-07-27

  • 有人@我

    就这?????

    2020-07-27

  • phpcn_u8729

    代码在哪里啊

    2020-09-08

  • 取消发布评论发送
  • 1/1

    PHP中文网