Laravel重定向离开方法重定向到自己的域



我正在使用Laravel Fortify为www.myurl.com上托管的应用程序编码一个托管在API.url.com上的Laravel API,该应用程序托管在不同于Lravel API的服务器上。

当用户在生成的链接上验证他们的电子邮件时,问题就来了,他们不会重定向到外部应用程序,而是再次重定向回API,而是在浏览器上。

文档声明Authenticate.pgp中间件中的此配置可以工作:

<?php
namespace AppHttpMiddleware;
use IlluminateAuthMiddlewareAuthenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param  IlluminateHttpRequest  $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return url(env('SPA_URL') . '/dashboard');
}
}
}

其中SPA_URL在www.myurl.com.的.env中设置

这会重定向到api.url.com/www.myurl.com/dashboard显然会导致404响应。

然后,我试图对这样的控制器调用操作

public function redirectDashboard(Request $request){
return redirect()->away('www.myurl.com/dashboard');
}

再次重定向到api.url.com/www.myurl.com/dashboard显然导致404响应。

我不知道为什么重定向((->away仍将重定向到同一API域上的url。

任何帮助都将不胜感激,谢谢。

RedirectTo方法将重定向到请求。

尝试编写新的中间件

public function handle($request, Closure $next)
{
//check here if the user is authenticated
if ( ! $this->auth->user() )
{
// here you should redirect to another site
return redirect(env('SPA_URL') . '/dashboard');
}
return $next($request);
}

我终于意识到重定向发生了什么:我使用的是redirect()辅助函数,而不是Redirect::class。helper函数将当前域附加到任何urlaway方法调用,而Redirect::class允许您重定向到任何需要的位置。

最新更新