【问题标题】:Laravel - How to redirect to previous url after email verification?Laravel - 电子邮件验证后如何重定向到以前的网址?
【发布时间】:2018-12-14 16:56:42
【问题描述】:

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

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

电子邮件验证后我需要同样的行为。

【问题讨论】:

  • 您必须将该网址存储在某处,以便以后恢复。
  • 对 Laravel 不是很熟悉,但你不能把它覆盖为一个身份验证控制器吗?
  • 以前的网址是什么意思?之前的 url 很可能是注册页面。
  • 我刚刚找到了改变它的方法。添加为答案。感谢您的建议。
  • 如果有更简单的方法,我仍然愿意提供建议。

标签: php laravel laravel-5


【解决方案1】:

首先我们需要修改 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,我们将在电子邮件验证后将用户重定向到该 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;
}

【讨论】:

    猜你喜欢
    • 2019-02-12
    • 2020-03-20
    • 2020-11-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多