Laravel-如何在电子邮件验证后重定向到先前的URL?

时间:2018-12-14 16:56:42

标签: php laravel laravel-5

我想在验证电子邮件后将用户重定向到以前的网址。

通常在Laravel 5.7中,单击需要身份验证的路由后,登录后将重定向到该URL。

电子邮件验证后,我需要采取相同的行为。

1 个答案:

答案 0 :(得分:0)

首先,我们需要修改 RedirectIfAuthenticated 并将预期的URL放入会话。

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if(session()->get("url.intended")){
            session()->put("redirect_after_email_verification", session()->get("url.intended"));
        }

        if (Auth::guard($guard)->check()) {
            return redirect('/admin');
        }

        return $next($request);
    }
}

然后将以下代码添加到 VerificationController 中,以检查先前向会话添加的网址。如果此URL存在于会话中,我们将在验证电子邮件后将用户重定向到该URL。

public function show(Request $request)
{
    return $request->user()->hasVerifiedEmail()
        ? redirect($this->redirectPath())
        : view('auth.verify');
}

protected function redirectTo(){
    if(session()->get("redirect_after_email_verification")){
        return session()->get("redirect_after_email_verification");
    }

    return $this->redirectTo;
}