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


控制器中使用

 

 插入一行代碼:

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     }
 
         

 



































 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM