如何将 CORS 中间件添加到自定义 Laravel Nova 工具中定义的路由?

How can I add CORS middleware to routes defined in custom Laravel Nova tool?

我正在使用 laravel nova 和 vuejs 构建无头 cms。

我在尝试从 https://github.com/barryvdh/laravel-cors 注册出色的 CORS 中间件时遇到问题。我可以从主应用程序获得它的工作,但我想将它添加为我的自定义 nova 工具的依赖项。

我只是不知道该怎么做。

我试过在 artisan nova:tool 命令生成的路由函数中添加中间件。

/**
 * Register the tool's routes.
 *
 * @return void
 */
protected function routes()
{
    if ($this->app->routesAreCached()) {
        return;
    }

    Route::middleware(\Barryvdh\Cors\HandleCors::class)
       ->prefix('api/meta-blog')
       ->group(__DIR__.'/../routes/api.php');
}

但是当我点击任何 api 路径时,我从 vendor/laravel/framework/src/Illuminate/Container/Container.php 收到错误 Class Barryvdh\Cors\HandleCors does not exist

我认为这是因为中间件没有在主应用程序中注册。我正在寻找如何使这个第 3 方 nova 工具依赖项与主要 laravel 路由系统一起工作。

我已经成功地使用了其他 3rd 方包。但不是这个。我可以确认该包存在并已加载到我的自定义工具自动加载文件中。

提前致谢。

我解决了这个问题。

在启动函数中我们可以推送一个中间件到api组。

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    ...

    $router = $this->app['router'];
    $router->pushMiddlewareToGroup('api', Barryvdh\Cors\HandleCors::class);
}

然后在路由函数中

/**
 * Register the tool's routes.
 *
 * @return void
 */
protected function routes()
{
    if ($this->app->routesAreCached()) {
        return;
    }

    Route::prefix('api/meta-blog')
        ->group(__DIR__.'/../routes/api.php');
}

希望这对其他人有帮助。