首頁 >php框架 >Laravel >laravel世界的衛士-中間件middleware

laravel世界的衛士-中間件middleware

灭绝师太
灭绝师太原創
2021-12-06 17:27:222052瀏覽

laravel世界的衛士-中間件middleware

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

    一、定義中間件

    透過php artsianmake:middleware指令建立中間件,檔案路徑: app\Http\Middleware\CheckToken.php

#
php artisan make:middleware CheckToken
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;

class CheckToken
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
       //在这里做一个判断,如果token不是 &#39;my-secret-token&#39;,则重定向
       if ($request->input(&#39;token&#39;) !== &#39;my-secret-token&#39;) {
            return redirect(&#39;home&#39;);
        }
        return $next($request);
    }
}

    二、中間件的分類

  • #前置中間件

<?php
namespace App\Http\Middleware;
use Closure;
class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
         ...
        // 应用请求之前执行一些任务
        return $next($request);
    }
}
  • #後置中間件

<?php
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        // 应用请求之后执行一些任务
        return $response;
    }
}

    三、中介軟體的使用

  • 全域使用中間件

//在app\Http\Kernel.php中的$middleware内添加
 protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        ....
        ....
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        //这是之前定义的
        \App\Http\Middleware\CheckToken::class,
    ];

#########使用中間件群組#############
//在app\Http\Kernel.php中的$middlewareGroups内添加
  protected $middlewareGroups = [
      &#39;web&#39; => [
           ....
        ],

        &#39;api&#39; => [
           ....
        ],
        &#39;diy&#39; =>[
          //可以在web组和api组中添加,也可以自己diy一个
        ]
    ];
//路由中使用,RouteServiceProvider 默认将 web 和 api 中间件组自动应用到 routes/web.php 和 routes/api.php
Route::get(&#39;/u&#39;, function () {

})->middleware(&#39;diy&#39;);
############單獨使用中間件## ##########
    protected $routeMiddleware = [
         ...,
         &#39;myself&#39;=> \App\Http\Middleware\CheckToken::class,
        ];
Route::get(&#39;/user&#39;, function () {
    //
})->middleware(&#39;myself&#39;);
###    相關影片教學建議:###Laravel### 影片教學###

以上是laravel世界的衛士-中間件middleware的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn