首页 > Web开发 > 详细

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

时间:2020-08-28 12:07:39      阅读:275      评论:0      收藏:0      [点我收藏+]
定义中间件
可以通过命令行指令快速生成中间件

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


控制器中使用

技术分享图片

 

 插入一行代码:

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中间件的使用+完整代码实例

原文:https://www.cnblogs.com/cuijunling/p/13576603.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!