laravel在控制器controller中定义中间件的方法,其实很简单,这里冗余记录一下吧
<?php namespace App\Http\Controllers\Customer; use App\Http\Controllers\Controller; class CommonController extends Controller { public $adminData; public function __construct() { //直接调用基础控制器中的middleware方法,参数是一个闭包函数 $this->middleware(function ($request, $next) { $this->adminData = $request->session()->get('adminData'); if (!$request->session()->has('adminData')) { return redirect('login.jay'); } return $next($request); }); } }
但是,在控制器的构造方法中指定中间件会更方便。使用控制器构造函数中的 middleware 方法, 你可以很容易地将中间件分配给控制器的行为。你甚至可以约束中间件只对控制器类中的某些特定方法生效:
class UserController extends Controller { /* Instantiate a new controller instance. @return void / public function __construct() { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->middleware('subscribed')->except('store'); } }