4

在 Laravel 中注册中间件很简单:

只需在 app/Http/Kernel.php 类的 $middleware 属性中列出中间件类

或者

如果您想将中间件分配给特定的路由,您应该首先在您的 app/Http/Kernel.php 文件中为中间件分配一个简写键

但是如何在 OctoberCMS 插件中做到这一点呢?“路由和初始化”是用来代替Kernel.php注册中间件的吗?如果没有,插件可以在哪里注册自己的中间件?

4

5 回答 5

2

文档中所述,您可以在 plugin.php 的 boot 方法中扩展控制器类;

public function boot()
{

    // Extend Controller Class
    \Cms\Classes\CmsController::extend(function($controller) {
        $controller->middleware('Middleware\Path..');
    });


    // OR Push it directly to the Kernel

      // prependMiddleware : Add a new middleware to beginning of the stack.
     $this->app['Illuminate\Contracts\Http\Kernel']
        ->prependMiddleware('Middleware\Path..');

     // pushMiddleware : Add a new middleware to end of the stack.
     $this->app['Illuminate\Contracts\Http\Kernel']
        ->pushMiddleware('Middleware\Path..');

}

您也可以将其添加到插件的routes.php文件中:

Route::group(['prefix' => 'foo'], function () {

        Route::get('{slug}', function($slug){

           ....

        })->where('slug', '(.*)?')->middleware('Path\To\Middleware');
});
于 2017-02-07T01:12:48.887 回答
1

用这个

Cms\Classes\CmsController::extend(function($controller) {
$controller->middleware('your middleware here');
});
于 2016-05-28T21:06:13.377 回答
1

实际上,您可以在插件register回调上推送中间件,因为它是在中间件发生之前注册的。

class YourPlugin extends PluginBase
{
   public function register()
   {
    $kernel = app()->make('Illuminate\Contracts\Http\Kernel');
    $kernel->pushMiddleware(YourMiddleWare::class);
   }
}
于 2017-01-11T01:55:35.857 回答
1

我在我的插件 routes.php 中使用带有完全限定类名和 Route 组的“中间件”选项让它工作

Route::group(['middleware' => '\Namespace\ABC123\AuthMiddleware'], function(){
于 2016-05-19T22:57:09.747 回答
-2

您必须列出中间件类

$middleware property

Kernel.php 类。

于 2016-05-01T06:33:03.803 回答