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

问题描述 投票:1回答:1

我正在使用laravel nova和vuejs建造一个无头的cms。

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

我只是无法弄清楚如何做到这一点。

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

/**
 * 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路径时,我从Class Barryvdh\Cors\HandleCors does not exist得到一个错误vendor/laravel/framework/src/Illuminate/Container/Container.php

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

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

提前致谢。

laravel laravel-nova
1个回答
1
投票

我解决了这个问题

在启动功能中,我们可以将中间件推送到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');
}

希望这有助于其他人。

© www.soinside.com 2019 - 2024. All rights reserved.