[英]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.