????中間件可以對請求進行過濾,這里可以利用中間件來驗證用戶是否登錄,如果用戶登錄則可以繼續執行原先想執行的操作,如果沒登錄則重定向到登錄頁面,讓用戶先登錄。
? ? 一、定義中間件
????通過 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不是 'my-secret-token',則重定向 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'?=>?[ ???????????.... ????????], ????????'api'?=>?[ ???????????.... ????????], ????????'diy'?=>[ ??????????//可以在web組和api組中添加,也可以自己diy一個 ????????] ????]; //路由中使用,RouteServiceProvider?默認將?web?和?api?中間件組自動應用到?routes/web.php?和?routes/api.php Route::get('/u',?function?()?{ })->middleware('diy');
-
單獨使用中間件
????protected?$routeMiddleware?=?[ ?????????..., ?????????'myself'=>?AppHttpMiddlewareCheckToken::class, ????????]; Route::get('/user',?function?()?{ ????// })->middleware('myself');
? ? 相關視頻教程推薦:Laravel?視頻教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END