Laravel 中间件的使用

Posted 小白兔晒黑了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  在此之间的就是前置操作,后面的就是后置操作。。。。。

以上是关于Laravel 中间件的使用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何在控制器的几种方法中重用代码片段

使用中间件在 laravel 中进行用户身份验证

在 laravel 中使用中间件保护路由

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

有人可以通过这个laravel代码告诉我

laravel添加api缓存系统