TP6 Auth权限使用

安装auth拓展

composer require wenhainan/thinkphp6-auth

安装Jump拓展

composer require liliuwei/thinkphp-jump

创建权限检查中间件

 php think make:middleware CheckAuth

配置中间件别名

在需要验证权限的控制器类中调用该中间件

  protected $middleware = ['auth'];

Auth配置文件

 权限处理中间件

<?php
declare (strict_types = 1);

namespace app\middleware;

use think\facade\Session;
use think\wenhainan\Auth;   //引入Auth类 
use app\BaseController;
use liliuwei\think\Jump;

/**
 * 权限处理中间件 
 */
class CheckAuth extends BaseController
{ 
    use Jump;

    /**
     * 处理请求 
     */
    public function handle($request, \Closure $next)
    {
        // 调用权限检查方法
        $this->checkAuth(); 
        return $next($request);
    }
  
    /**
     * 权限检查
     * @return bool
     */
    function checkAuth() {   
        //已登录用户id  
        $id=session('id');
        if (!$id) { 
            $this->redirect('/admin/login');
        }
       
        $module     = request()->root();   //应用名
        $controller = request()->controller();   //控制器名
        $action     = request()->action();     //方法名
        // 请求到的规则名 AuthRule Name
        $url=$module . '/' . $controller . '/' . $action;  
        //实例化Auth
        $auth  = new Auth(); 
        if (!$auth->check( $url , $id ) ) {
          // 没有权限跳转到未授权页面
          $this->success("当前用户没有该操作权限,请联系管理员!",'../');
        }  
    } 
} 

注意细节,冗余代码不必再用。

我的测试通过截图如下

测试用户登录

 

管理员登录

 访问一个不存在控制器时,跳转到上一页

 需要注意:

                $url的值不在搜索的$not_check数组中,输出===》不存在

                取反,输出===》存在

 function create(){  
    echo "<h2>admin  create </h2>";

    $url='/admin/Index/json';
    // 排除权限
    $not_check = ['/admin/Login/logout','/admin/Login','/admin/Index/unauth'];
      
    // $url要搜索的值   $not_check要搜索的数组
    if (in_array( $url, $not_check )) { 
              echo "存在";
       }else{ 
              echo "不存在";
       } 
  }

 所以排除的$not_check数组中的规则毫无必要(easyui类似的前端框架需要配置该项),auth查询不到的合法规则都可以默认访问,不合法的规则会被拒绝。另外就是TP框架的异常处理来配合Auth的使用,来达到更好的权限控制。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人海中的海盗

你的打赏将是对我的激励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值