在kernel.php中列出中间件

时间:2017-01-01 12:47:35

标签: laravel laravel-5.3

我有一个管理员middlware AdminMiddleware.php

 public function handle($request, Closure $next, $guard = null)
    {
        if(Auth::check())
        {
            if($request->user()->is_admin==1)
            {
               return $next($request);
            }
             return redirect('/login');    
        }
        else
        {
          return redirect('/login');   
        }
    }

我在adminmiddleware下有一些路由:

Route::group(['middleware' => ['App\Http\Middleware\Adminmiddleware']], function () {
        //admin routes
        });

正常工作。我对Registering middleware感到困惑?我为什么要注册。只为别名或更有效的东西?

2 个答案:

答案 0 :(得分:3)

对于$routeMiddleware$middlewareGroups,它们主要用于别名。正如您所提到的,您可以不注册它并在路径文件中使用它。

如果你需要交换实施,那就更方便了。

IMO,注册它,以便您可以在任何时间交换中间件实现,而无需进入您的路由配置文件来更改它 - 这比一个中心位置更改更容易出错。

答案 1 :(得分:2)

注册中间件会自动为每个请求加载类。您告诉Laravel加载并注册它,因此您可以在路由和控制器中使用它,而无需手动初始化它。与控制台命令,服务提供商等相同。您必须在使用它们之前注册。

  

如果您希望在对应用程序的每个HTTP请求期间运行中间件,只需在app / Http / Kernel.php类的$ middleware属性中列出中间件类。