簡體   English   中英

如何將 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 路徑時,我收到一個錯誤Class Barryvdh\\Cors\\HandleCors does not exist from vendor/laravel/framework/src/Illuminate/Container/Container.php

我認為這是因為中間件未在主應用程序中注冊。 我正在尋找如何使這個 3rd 方 nova 工具依賴項與主要的 Laravel 路由系統一起工作。

我已經成功地成功使用了其他 3rd 方軟件包。 但不是這個。 我可以確認該包存在並已加載到我的自定義工具自動加載文件中。

提前致謝。

我解決了這個問題。

在 boot 函數中,我們可以將中間件推送到 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');
}

希望這對其他人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM