【问题标题】:Laravel's signedURL generates wrong URL when using api middlwareLaravel 签名 URL 在使用 api 中间件时生成错误的 URL
【发布时间】:2020-05-02 20:56:32
【问题描述】:

我有一个在 Nuxt 和 Laravel 上运行的前端作为后端服务。当我使用 Laravel 的 API 中间件生成签名 URL 时 - 路径在 URL 中包含“api”,导致 Nuxt 端出现页面未找到异常

因此,以下是更好地了解正在发生的事情的步骤:

  1. 用户点击 Nuxt 应用程序中的一个按钮并将 ajax 请求发送到 Laravel API
  2. API 控制器生成签名 URL

$signedUrl = URL::signedRoute('register', ['email' => $this->request->email, 'group_id' => $this->request->group_id], null, false);

  1. 生成的URL路径中包含“api”,当然不能访问 http://localhost:3000/api/register?email=ss%40gmail.com&group_id=2&signature=ce4fba05bf5ccae6ea20a6043a47ca11de603238214deda7202d19f2989272cb

有没有办法从生成的 URL 中删除 /api/?我尝试将方法 signedRoute 中的第 4 个参数(绝对值)设置为 false,但没有帮助。

【问题讨论】:

  • 你能分享一下'register'路由的路由器吗?
  • 苏,在这里,在 routes/api Route::get('register', 'RegisterController@register')->name('register'); Route::post('register', 'Auth\RegisterController@register');
  • api 默认路由有前缀'api',所以当你生成签名 URL 时,你请求路由 register,因此生成的 URL 将是 www.mydomain.com/api/register?...

标签: laravel api signed-url


【解决方案1】:

默认 api 路由具有前缀“api”,如您的 RouterProvider 所示:

    protected function mapApiRoutes()
    {
        Route::prefix('api')
               ...;
    }

当您生成签名 URL 时,对于使用前缀 api 的路由 'register',生成的 URL 将如预期的那样:www.mydomain.com/api/register?...

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 2014-05-09
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多