判断用户的操作权限,我们可能需要获取当前url路径中的应用名、控制器名、操作名。
如果使用了多应用模式,可以通过下面的方法来获取当前应用
app('http')->getName();
获取当前控制器
Request::controller();
获取当前操作
Request::action();
在中间件middleware中是无法获取控制器和操作的
需要将middleware的引入修改为 config 目录下的 route.php 中

- return [
- 'middleware' => [
- // 系统日志记录
- // \app\run\middleware\SystemLog::class,
- // 检测登录状态
- \app\middleware\AuthMiddleware::class,
- ],
- ];
middleware中获取应用名、控制器名、操作名
-
- 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
"; - // echo $controller;
- // echo "4444
"; - // echo $action;
- // echo "4444
"; -
- if (!$app || !$controller || !$action)
- {
- echo "未能获取到app,controller,action";
- exit();
- }
-
-
-
- // 校验权限的代码
-
-
-
- // 添加中间件执行代码 end
-
- return $next($request);
- }
- }
软件工程小施同学
20231013