我有一个购物车产品页面,如果有人点击产品添加到购物车按钮,他们将被重定向到登录页面。
成功登录后,我需要再次将用户发回相同的产品页面。
我在登录控制器中使用了以下方法。
但它并没有按照我想要的方式工作。
意味着它再次重定向到索引页面,我也使用了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('/');
}
}
如何解决问题?
答案 0 :(得分:5)
在这种情况下,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'));
}
答案 1 :(得分:1)
可能是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'));
}
}
这就是当用户登录时,他将自动重定向到上一页。