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

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('/'); 
      } 
    } 

如何解决这个问题?

+0

return redirect() - > back()不起作用? –

+0

nope ..它不起作用 – User57

在这种情况下,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')); 
      } 
    } 

这就是如何当用户登录时,他将被自动重定向到前一页..