laravel世界的衛士-中間件middleware

laravel世界的衛士-中間件middleware

????中間件可以對請求進行過濾,這里可以利用中間件來驗證用戶是否登錄,如果用戶登錄則可以繼續執行原先想執行的操作,如果沒登錄則重定向到登錄頁面,讓用戶先登錄。

? ? 一、定義中間件

????通過 php artsian?make:middleware 命令 創建中間件,文件路徑: appHttpMiddlewareCheckToken.php

php?artisan?make:middleware?CheckToken
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest;  class CheckToken {     /**      * Handle an incoming request.      *      * @param  IlluminateHttpRequest  $request      * @param  Closure  $next      * @return mixed      */     public function handle(Request $request, Closure $next)     {        //在這里做一個判斷,如果token不是 &#39;my-secret-token&#39;,則重定向        if ($request->input('token')?!==?'my-secret-token')?{ ????????????return?redirect('home'); ????????} ????????return?$next($request); ????} }

? ? 二、中間件的分類

  • 前置中間件

<?php namespace AppHttpMiddleware; use Closure; class BeforeMiddleware {     public function handle($request, Closure $next)     {          ...         // 應用請求之前執行一些任務         return $next($request);     } }
  • 后置中間件

<?php namespace AppHttpMiddleware; use Closure; class AfterMiddleware {     public function handle($request, Closure $next)     {         $response = $next($request);         // 應用請求之后執行一些任務         return $response;     } }

? ? 三、中間件的使用

  • 全局使用中間件

//在appHttpKernel.php中的$middleware內添加 ?protected?$middleware?=?[ ????????//?AppHttpMiddlewareTrustHosts::class, ????????.... ????????.... ????????IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class, ????????//這是之前定義的 ????????AppHttpMiddlewareCheckToken::class, ????];
  • 使用中間件組

//在appHttpKernel.php中的$middlewareGroups內添加 ??protected?$middlewareGroups?=?[ ??????'web'?=&gt;?[ ???????????.... ????????],  ????????'api'?=&gt;?[ ???????????.... ????????], ????????'diy'?=&gt;[ ??????????//可以在web組和api組中添加,也可以自己diy一個 ????????] ????]; //路由中使用,RouteServiceProvider?默認將?web?和?api?中間件組自動應用到?routes/web.php?和?routes/api.php Route::get('/u',?function?()?{  })-&gt;middleware('diy');
  • 單獨使用中間件

????protected?$routeMiddleware?=?[ ?????????..., ?????????'myself'=&gt;?AppHttpMiddlewareCheckToken::class, ????????]; Route::get('/user',?function?()?{ ????// })-&gt;middleware('myself');

? ? 相關視頻教程推薦:Laravel?視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享