[英]Laravel 5.1 Register Package Middleware
我正在為我的自定義包開發一些中間件。 但是,為了使用這些包中間件,我必須手動將它添加到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
?
要添加基於路由的中間件,請在包服務提供程序中執行此操作(引導方法)。
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)
對於laravel 5.4及以上版本,請使用:
public function boot(\Illuminate\Routing\Router $router)
{
$router->aliasMiddleware('name', 'MiddlewareClass');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.