小白兔晒黑了

导航

 

中间件的作用:

过滤进入应用程序的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  在此之间的就是前置操作,后面的就是后置操作。。。。。

posted on 2020-07-16 17:13  小白兔晒黑了  阅读(2235)  评论(0编辑  收藏  举报