简体   繁体   English

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

[英]Laravel - How to redirect to previous url after email verification?

I want to redirect user to previous url after email verification. 电子邮件验证后,我想将用户重定向到以前的URL。

Normally in Laravel 5.7 after you click on route which requires authentication you will be redirected back to that url after you log in. 通常,在Laravel 5.7中,单击需要身份验证的路由后,登录后将重定向到该URL。

I need same behaviour after e-mail verification. 电子邮件验证后,我需要相同的行为。

First we need to modify RedirectIfAuthenticated and put intended url to session. 首先,我们需要修改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);
    }
}

Then add following code to VerificationController to check previously added url to session. 然后将以下代码添加到VerificationController,以检查先前添加到会话的url。 If this url exist in session we will redirect user to that url after email verification. 如果该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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM