[英]Laravel redirect away method redirects to own domain
I am coding a Laravel API hosted on api.url.com for an application hosted on www.myurl.com on a server different to the Lravel API using Laravel Fortify.
当用户在生成的链接上验证他们的 email 时,问题就出现了,他们不会被重定向到外部应用程序,而是再次回到 API,而是在他们的浏览器上。
文档 state 证明 Authenticate.pgp 中间件中的此配置可以工作:
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return url(env('SPA_URL') . '/dashboard');
}
}
}
其中 SPA_URL 在 .env 中设置为www.myurl.com 。
这重定向到api.url.com/www.myurl.com/dashboard显然会导致 404 响应。
然后我尝试对 controller 采取行动
public function redirectDashboard(Request $request){
return redirect()->away('www.myurl.com/dashboard');
}
这再次重定向到api.url.com/www.myurl.com/dashboard显然导致 404 响应。
我不知道为什么 redirect()->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()
助手 function 而不是Redirect::class
。 助手 function 将当前域附加到任何url
或away
方法调用,而Redirect::class
允许您重定向到您需要的任何地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.