Laravel 5.1注册包中间件

时间:2015-07-24 06:20:44

标签: php laravel-5

我正在为我的自定义包开发一些中间件。但是,为了使用这些包中间件,我必须手动将其添加到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

2 个答案:

答案 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');
}