thinkphp6 前置/后置中间件

中间件是在请求具体的操作之前还是之后执行,完全取决于中间件的定义本身

下面是一个前置行为的中间件

代码执行前执行

 1 <?php
 2 
 3 namespace app\middleware;
 4 
 5 class Before
 6 {
 7     public function handle($request, \Closure $next)
 8     {
 9         // 添加中间件执行代码
10 
11         return $next($request);
12     }
13 }

下面是一个后置行为的中间件

代码执行后执行

<?php

namespace app\middleware;

class After
{
    public function handle($request, \Closure $next)
    {
        $response = $next($request);

        // 添加中间件执行代码

        return $response;
    }
}

后置中间件可以获取当前控制器名和方法名

可用于后台权限管理

 

<?php
declare (strict_types = 1);

namespace app\index\middleware;
use think\facade\Session;
class Show
{
public function handle($request, \Closure $next)
{
$response = $next($request);
dump(request()->controller().'/'.request()->action());
$url = request()->controller().'/'.request()->action();
if (!Session::has('member_name')){
$currenturl = ['Product/product'];
if (in_array($url,$currenturl)){
return redirect((string)url('Login/login'));
}
}
return $response;
}
}

 

 

posted @ 2022-01-09 20:07  旅行者无声  阅读(646)  评论(0)    收藏  举报