thinkphp5 怎么使用auth

发布网友 发布时间:2022-04-28 06:54

我来回答

2个回答

懂视网 时间:2022-04-28 11:15

下面由thinkphp框架教程栏目给大家介绍Thinkphp5中auth权限设置以及实现,希望对需要的朋友有所帮助!

1.将auth类下载好 放置目录: extendauthauth.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 appadmincontroller;
use thinkController;
use thinkRequest;
use authAuth; //引入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');
  };
  }
 }




 }

最终展示;

热心网友 时间:2022-04-28 08:23

public function _empty($name)
{
$auth = new \thinkcms\auth\Auth();
$auth = $auth->autoload($name);
if($auth){
if(isset($auth['code'])){
return json($auth);
}elseif(isset($auth['file'])){
return $auth['file'];
}

$this->view->engine->layout(false);
return $this->fetch($auth[0],$auth[1]);
}
return abort(404,'页面不存在');
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com