Laravel 定义中间件

示例

要定义新的中间件,我们必须创建中间件类:

class AuthenticationMiddleware
{
    //触发中间件时将执行此方法
    public function handle ( $request, Closure $next )
    {
        if ( ! Auth::user() )
        {
            return redirect('login');
        }

        return $next($request);
    }
}

然后,我们必须注册中间件:如果中间件应绑定到应用程序的所有路由,则应将其添加到的中间件属性中app/Http/Kernel.php:

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\AuthenticationMiddleware::class
];

而如果我们只想将中间件关联到某些路由,则可以将其添加到 $routeMiddleware

//将中间件注册为“路由中间件”,并为其指定名称“ custom_auth”
protected $routeMiddleware = [
    'custom_auth' => \App\Http\Middleware\AuthenticationMiddleware::class
];

然后将其绑定到单个路由,如下所示:

//将中间件绑定到admin_page路由,以便将其用于该路由
Route::get('admin_page', 'AdminController@index')->middleware('custom_auth');