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

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

php think make:middleware Check
这个指令会 app/middleware目录下面生成一个Check中间件。
 1 <?php
 2 namespace app\middleware;
 3 
 4 class Check {
 5     /**
 6      * 处理请求
 7      *
 8      * @param \think\Request $request
 9      * @param \Closure       $next
10      * @return Response
11      */
12     public function handle($request, \Closure $next) {
13         //
14         if (empty($request->session(‘username‘))) {
15             return redirect(url(‘user/login‘));
16         }
17         return $next($request);
18     }
19 }


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

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

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


控制器中使用

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

 

 插入一行代码:

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

 

附:登录的代码
 1 public function login() {
 2         if (Request::isGet()) {
 3             return view();
 4         } else {
 5             // 接受登陆的数据
 6             $username = input(‘username‘);
 7             $pwd = input(‘pwd‘);
 8             // 验证
 9             $data = Db::table(‘user‘)->where(‘username‘, $username)->find();
10             if (empty($data)) {
11                 return $this->error(‘用户不存在,请注册‘, ‘reg‘);
12             } else {
13                 if ($pwd !== $data[‘pwd‘]) {
14                     return $this->error(‘密码错误‘);
15                 }
16                 // 保存到session
17                 session(‘username‘, $username);
18                 return $this->success(‘登陆成功‘, ‘show‘);
19             }
20         }
21     }

 



































 

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

上一篇:基于PHPstream扩展手动实现一个redis客户端


下一篇:php openssl