thinkphp6入门(9)-- 获取url路径中的应用名、控制器名、操作名

判断用户的操作权限,我们可能需要获取当前url路径中的应用名、控制器名、操作名。

如果使用了多应用模式,可以通过下面的方法来获取当前应用

app('http')->getName();

获取当前控制器

Request::controller();

获取当前操作

Request::action();

在中间件middleware中是无法获取控制器和操作的

需要将middleware的引入修改为 config 目录下的 route.php 中

<?php
return [
    'middleware' => [
        // 系统日志记录
        //    \app\run\middleware\SystemLog::class,
        // 检测登录状态
        \app\middleware\AuthMiddleware::class,
    ],
];

middleware中获取应用名、控制器名、操作名

<?php

namespace app\middleware;

use think\facade\Request;
use think\facade\Session;

// 前置行为的中间件
class AuthMiddleware
{
    public function handle($request, \Closure $next)
    {
        // 添加中间件执行代码 start

        // 获取当前应用名
        $app = app('http')->getName();
        // 获取当前控制器名
        $controller = Request::controller('true');
        // 获取当前操作名
        $action = Request::action('true');

        // echo $app;
        // echo "4444<br/>";
        // echo $controller;
        // echo "4444<br/>";
        // echo $action;
        // echo "4444<br/>";

        if (!$app || !$controller || !$action)
        {
            echo "未能获取到app,controller,action";
            exit();
        }



        // 校验权限的代码



        // 添加中间件执行代码 end

        return $next($request);
    }
}

请求信息 · ThinkPHP6.0完全开发手册 · 看云ThinkPHP`6.0`基于精简核心和统一用法两大原则在`5.1`的基础上对底层架构做了进一步的优化改进,并更加规范化。 icon-default.png?t=N7T8https://www.kancloud.cn/manual/thinkphp6_0/1037518

软件工程小施同学

20231013

猜你喜欢

转载自blog.csdn.net/u013288190/article/details/133817678