我正在为我的自定义包开发一些中间件。但是,为了使用这些包中间件,我必须手动将其添加到kernel.php
文件中$routeMiddleware
。所以现在,每次使用我的包时,我都必须手动添加这些额外的代码行。
'login.auth' => \Vendor\Package\http\middleware\loginAuth::class,
'login.guest' => \Vendor\Package\http\middleware\loginGuest::class,
'login.permission' => \Vendor\Package\http\middleware\loginPermission::class,
随着包的增长,列表可能会变长。如何更好地注册包中间件而无需手动将所有包注册到$routeMiddleware
?
答案 0 :(得分:2)
要添加基于路由的中间件,请在包服务提供程序(引导方法)中执行此操作。
public function boot(\Illuminate\Routing\Router $router)
{
$router->middleware('name', 'MiddlewareClass');
}
此外,对于不基于路由的中间件,类Illuminate\Foundation\Http\Kernel
具有您可以调用的这两种公共方法:
/**
* Add a new middleware to beginning of the stack if it does not already exist.
*
* @param string $middleware
* @return $this
*/
public function prependMiddleware($middleware)
/**
* Add a new middleware to end of the stack if it does not already exist.
*
* @param string $middleware
* @return $this
*/
public function pushMiddleware($middleware)
答案 1 :(得分:1)
对于laravel 5.4及以上版本,请使用:
public function boot(\Illuminate\Routing\Router $router)
{
$router->aliasMiddleware('name', 'MiddlewareClass');
}