登录/注册无效后,重定向到以前的URL

时间:2019-12-27 01:08:50

标签: laravel

我试图在成功登录或注册后将用户重定向到上一页。

我向LoginController.phpRegisterController.php添加了以下方法:

protected function redirectTo()
{
   return url()->previous();
}

但是它总是返回到/login。我尝试查看使用dd(url()->previous());进行重定向的地方,并得到了http://example.com/login。有人知道为什么会这样吗?我是否需要在其他控制器上进行其他更改才能使其正常工作?

4 个答案:

答案 0 :(得分:1)

authenticated() function中成功登录后,您可以使用LoginController

/**
 * The user has been authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
protected function authenticated(Request $request, $user)
{
    return back(); //add this line of code
}

创建用户成功后RegisterController和您return back()

答案 1 :(得分:1)

尝试此方法:

public function showLoginForm()
{
    session(['link' => url()->previous()]);
    return view('auth.login');
}


protected function authenticated(Request $request, $user)
{
    return redirect(session('link'));
}

答案 2 :(得分:0)

在您的控制器中,您可以使用。

return redirect()->back()

答案 3 :(得分:0)

您可以使用的选项很少。正如Rayan所说,您可以通过身份验证后成为用户用户。因此,请解释一下可以用来满足要求的可用方法。

1。用户通过back()认证后

    protected function authenticated(Request $request, $user)
{
    return back(); //add this line of code
}

2。为LoginController,RegisterController,ResetPasswordController和VerificationController定义重定向路由

protected $redirectTo = '/'; // You can specify the path here.

see the documentation

3。使用会话

您可以使用以前的网址设置会话,然后在所需的任何地方使用它

protected function create(array $data)
{
 $redirect = session('redirecturl' => url()->previous());
 }

现在使用此路由如下重定向用户

   protected function authenticated(Request $request, $user)
{
    return redirect(session()->get('redirecturl'));
}

谢谢

相关问题