Laravel 在kernel.php中列出中间件

Laravel 在kernel.php中列出中间件,laravel,laravel-5.3,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);

我有一个管理员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
        });

工作正常。我有点困惑?我为什么要注册呢。只为alias或更有效的东西

注册中间件将自动为每个请求加载类。您告诉Laravel加载并注册它,这样您就可以在路由和控制器中使用它,而无需手动初始化它。控制台命令、服务提供程序等也一样。在使用它们之前必须注册

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


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

它更方便您交换您需要的实现


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

我使用它而不注册,这没问题。