Laravel:登录后将用户重定向到同一页面
问题描述:
我有一个购物车产品页面,如果一个人点击一个产品添加到购物车按钮,他们将被重定向到登录页面。Laravel:登录后将用户重定向到同一页面
成功登录后,我需要将用户重新发回到同一产品页面。
我在登录控制器中使用了以下方法。
但它实际上并不按我想要的方式工作。 意味着它再次重定向到索引页,我已经使用了return redirect()->back();
also..but不能解决问题
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'));
}
+3
这可能超出了这个答案的范围,但是请你解释为什么'back()'或'intended()'不起作用..任何可能有帮助的链接。 – jaysingkar
答
可能Mezenin解决方案是正确的,但我解决它其他方式。 (我把这个概念从上述溶液)
由于我使用Laravel 5.4 ..I'm根据最近的文件目录给予解决方案..
我已经改变了showLoginFrom控制器,它里面AuthenticateUsers
性状这样的:
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'));
}
}
这就是如何当用户登录时,他将被自动重定向到前一页..
return redirect() - > back()不起作用? –
nope ..它不起作用 – User57