form1.cn
Make a little progress every day

laravel在控制器controller中定义中间件

14th of April 2018 PHP Laravel 4584

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');
    }
}