Laravel 中間件的使用(前置與后置)


中間件的作用:

過濾進入應用程序的http請求。

比如,有一個活動,在活動開始前進入活動頁則跳轉到宣傳頁

使用步驟:

1 創建中間件 \app\Http\Middleware\Activity.php

php artisan make:middleware Activity
<?php

namespace App\Http\Middleware;

use Closure;

class Activity
{
    /**
     * Handle an incoming request.
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */

    public function handle($request,Closure $next){

        if(time() < strtotime('2020-08-06')){
            return redirect('activity0');
        }
        return $next($request);
    }
}

2 控制器方法 \app\Http\Controllers\StudentController.php

    public function activity0()
    {
        return '活動快要開始了';
    }

    public function activity1()
    {
        return '活動進行中,感謝你的參與1';
    }
    public function activity2()
    {
        return '活動進行中,感謝你的參與2';
    }

3 設置路由 \routes\web.php

//宣傳頁面
Route::any('activity0',['uses'=>'StudentController@activity0']);

//活動頁面:
Route::group(['middleware'=>['activity']],function (){
    Route::any('activity1',['uses'=>'StudentController@activity1']);
    Route::any('activity2',['uses'=>'StudentController@activity2']);
});

4 注冊路由 \app\Http\Kernel.php

    protected $routeMiddleware = [
       。。。。。
        'activity' => \App\Http\Middleware\Activity::class,
    ];

 前置操作與后置操作

    public function handle($request,Closure $next)
    {
        echo '【我是前置操作】';
        $response = $next($request);//$next($request)本質上就是response
        echo($response);
        echo '【我是后置操作】';
    }

$next($request)就是response  在此之間的就是前置操作,后面的就是后置操作。。。。。


免責聲明!

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



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