记录学习与后端知识并分享学习代码过程(会飞的鱼Blog)

ThinkPHP6中间件的使用+完整代码实例

会飞的鱼 0 4715 2022年1月18日

定义中间件

可以通过命令行指令快速生成中间件

php think make:middleware Check

这个指令会 app/middleware目录下面生成一个Check中间件。

<?php
namespace app\middleware;

class Check {
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next) {
        //
        if (empty($request->session('username'))) {
            return redirect(url('user/login'));
        }
        return $next($request);
    }
}

中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。

中间件handle方法的返回值必须是一个Response对象。

在这个中间件中我们判断当前请求的name参数等于think的时候进行重定向处理。否则,请求将进一步传递到应用中。要让请求继续传递到应用程序中,

只需使用 $request 作为参数去调用回调函数 $next 。

控制器中使用

插入一行代码:

protected $middleware = ['app\middleware\Check::class'];

附:登录的代码

public function login() {
        if (Request::isGet()) {
            return view();
        } else {
            // 接受登陆的数据
            $username = input('username');
            $pwd = input('pwd');
            // 验证
            $data = Db::table('user')->where('username', $username)->find();
            if (empty($data)) {
                return $this->error('用户不存在,请注册', 'reg');
            } else {
                if ($pwd !== $data['pwd']) {
                    return $this->error('密码错误');
                }
                // 保存到session
                session('username', $username);
                return $this->success('登陆成功', 'show');
            }
        }
    }
本文由 @会飞的鱼 于 2022-1-18 发布在 会飞的鱼Blog,如无特别说明,本博文章均为原创,转载请保留出处。

网友评论

    暂无评论

会飞的鱼 在线咨询

在线时间:9:00-22:00
周六、周日:14:00-22:00