在 kernel.php 中列出中间件
Listing middleware in kernel.php
我有一个管理中间件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 有点困惑?我为什么要注册。仅用于别名或更有效的东西?
注册中间件会自动为每个请求加载 class。你告诉 Laravel 加载并注册它,这样你就可以在路由和控制器中使用它而无需手动初始化它。与控制台命令、服务提供商等相同。您必须在使用前注册。
If you want a middleware to run during every HTTP request to your application, simply list the middleware class in the $middleware property of your app/Http/Kernel.php class.
对于$routeMiddleware
和$middlewareGroups
,它们主要用于别名。正如您提到的,您可以不注册它并在您的路由文件中使用它。
更多的是方便您根据需要交换实现。
IMO,注册它,这样你就可以在任何时候交换中间件实现,而无需进入你的路由配置文件来更改它——这比一个中央位置更改更容易出错。
我有一个管理中间件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 有点困惑?我为什么要注册。仅用于别名或更有效的东西?
注册中间件会自动为每个请求加载 class。你告诉 Laravel 加载并注册它,这样你就可以在路由和控制器中使用它而无需手动初始化它。与控制台命令、服务提供商等相同。您必须在使用前注册。
If you want a middleware to run during every HTTP request to your application, simply list the middleware class in the $middleware property of your app/Http/Kernel.php class.
对于$routeMiddleware
和$middlewareGroups
,它们主要用于别名。正如您提到的,您可以不注册它并在您的路由文件中使用它。
更多的是方便您根据需要交换实现。
IMO,注册它,这样你就可以在任何时候交换中间件实现,而无需进入你的路由配置文件来更改它——这比一个中央位置更改更容易出错。