繁体   English   中英

Laravel:登录后将用户重定向到同一页面

[英]Laravel : Redirect the user to the same page after login

我有一个购物车产品页面,如果有人单击添加到购物车的产品按钮,他们将被重定向到登录页面。

成功登录后,我需要再次将用户发送回相同的产品页面。

我在登录控制器中使用了以下方法。

但这实际上不是我想要的方式。 意味着它再次重定向到索引页,我使用了return redirect()->back(); 也..但不能解决问题

if (auth()->attempt(array('email' => $request->input('email'),
             'password' => $request->input('password')))){
 if(Auth::user()->name == 'Admin'){
                 return redirect()->to('home');
            }
            else{
           //     return redirect()->back();
                return redirect()->intended('/');
            }
     }

该如何解决呢?

在这种情况下, back()intended()将不起作用。

您可以将上一个产品页面保存到会话中。 非常简化的示例:

session(['last_product_page_id' => $product->id]);

然后使用此数据在登录后重定向用户:

if (session()->has('last_product_page_id')) {
    return redirect()->route('product', session('last_product_page_id'));
}

也许Mezenin解决方案是正确的,但是我用其他方式解决了。 (我从上面的解决方案中得出了这个概念)

当我使用Laravel 5.4时,我正在基于最新文件目录提供解决方案。

我已经将AuthenticateUsers特性内的showLoginFrom控制器更改为:

  public function showLoginForm()
    {
        Session::put('url.intended',URL::previous());
        return view('auth.login');        
    }

在我的登录控制器中,我进行了更改:

if (auth()->attempt(array('email' => $request->input('email'),
             'password' => $request->input('password')))){
 if(Auth::user()->name == 'Admin'){
                 return redirect()->to('home');
            }
            else{
            return Redirect::to(Session::get('url.intended'));
            }
     }

这就是用户登录时将自动将其重定向到上一页的方式。

暂无
暂无

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

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