Laravel 在kernel.php中列出中间件
我有一个管理员middlware AdminMiddleware.phpLaravel 在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);
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,注册它,这样您就可以在任何时间点交换中间件实现,而无需进入路由配置文件进行更改-这比更改一个中心位置更容易出错。我使用它而不注册,这没问题。