中间件

创建

首次创建中间件,可以用命令行,使用后会在app目录下,创建一个中间件目录。

php think make:middleware 中间件名(英文)

回车之后,就会生成middleware目录和目录下的中间件文件。

新建的中间件,是这样的:

<?php
declare (strict_types = 1);

namespace app\middleware;

class Admin
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        //
    }
}

我们需要给他加上一个输出,才能用:

public function handle($request, \Closure $next)
    {
        # 以此结尾
        return $next($request);
    }

二次和更多次新建中间件,就可以直接把上述文件,另存为了。

注册中间件

有两种注册方式——官方也没写明,让我踩了很多坑。

第一种,直接注册

打开app目录下的middleware.php文件。

<?php
// 全局中间件定义文件
return [
    // Session初始化
    \app\middleware\Admin::class,
];

Admin就是中间件的名字。

第二种,别名注册

打开config下的middleware.php文件。

<?php
// 中间件配置
return [
    // 别名或分组
    'alias'    => [
        # 后台鉴权
        'Admin'=>\app\middleware\Admin::class
    ],
    // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
    'priority' => [],
];

在数组alias里,书写别名。例子里的Admin,就是中间件Admin::class的别名。

第一种和第二种的区别

区别在于使用方式上。

第一种的使用方式:

Route::get('/admin/:id', 'app\Controller\Admin\TaskList@Index')->middleware([\app\middleware\Admin::class]);

第二种的使用方式:

Route::get('/admin/:id', 'app\Controller\Admin\TaskList@Index')->middleware(['Admin']);

一对比,就知道哪个更方便了。

给TA买糖
共{{data.count}}人
人已赞赏
tp6-边用边总结

session

2021-4-20 23:31:00

tp6-边用边总结

自定义view文件夹

2021-4-20 23:31:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索