Laravel重置密码链接中的错误域

时间:2019-07-17 10:21:54

标签: laravel router

我在laravel 5.8中具有两次域的sendResetLinkResponse控制器生成了一个错误的URL。

  

https://api.domain.org/domain.org/password/reset/ ....

但是应该是

  

https://api.domain.org/password/reset/ ....

APP_URL设置为

  

APP_URL = domain.org

我使用自定义配置,以能够将api.domain.org用作端点,而不是www.domain.org/api

我的配置是:

protected function mapApiRoutes() {

 Route::domain('api.' .  env('APP_URL'))
   ->middleware('api')
   ->namespace($this->namespace)
   ->group(base_path('routes/api.php'));
}

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我建议将您的子域设置为更具动态性,即

Route::domain('api.{domain}')
    ->middleware(['api', function ($request, $next) {
        $request->route()->forgetParameter('domain');

        return $next($request);
    }])
    ->namespace($this->namespace)
    ->group(base_path('routes/api.php'));

上面的代码基本上允许任何域名,然后中间件将其从路由参数中删除,以免与路由闭包或控制器方法混淆。

您还需要将以下内容添加到服务提供商的启动方法中:

Route::pattern('domain', '[a-z0-9.]+');

通过这种方式,您可以使用APP_URL作为网站的域。