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

时间:2017-04-04 10:28:31

标签: php laravel laravel-5

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

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

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

但它并没有按照我想要的方式工作。 意味着它再次重定向到索引页面,我也使用了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('/');
            }
     }

如何解决问题?

2 个答案:

答案 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'));
            }
     }

这就是当用户登录时,他将自动重定向到上一页。

相关问题