如何在登录后重定向到适当的路由而不是URL :: previous()

时间:2017-04-26 07:01:58

标签: php laravel redirect laravel-5

我使用URL::previous()将用户重定向到登录后他在那里的上一页但是我想在登录后将他重定向到适当的路线。假设用户想要添加他的购物车产品。但是如果他没有登录在他必须登录和登录后,我想将他发送到购物车页面而不是产品页面他在那里添加到购物车。 是否有像URL::previous()这样的库会在登录后重定向用户,他需要查看?

3 个答案:

答案 0 :(得分:0)

在登录控制器中尝试添加以下内容:

r = re.compile('{}\s"([\w@#$%^&*]+)"'.format('password'))
r.sub('new_passw0rd', file)

或者,如果您想添加更多逻辑,可以使用具有相同名称的方法:

protected $redirectTo = '/cart';

<强>更新

如果要重定向到命名路由,可以修改redirectTo方法以使用route()帮助程序,并将3rd设置为protected function redirectTo() { // some logic return '/cart'; }

false

在这种情况下,路由助手只返回URI路径,而不是绝对URL。

答案 1 :(得分:0)

您可以在购物车的路线中处理此问题,在您检查用户是否已登录后,您可以将传递给控制器​​的$request对象获取请求的网址,然后将此网址传递给您登录页面作为参数。

//Controller

public function showCart(Request $request){
  // check if logged in
  if ($isLoggedIn){
    // Do stuff
  } else {
    $url = $request->path();
    return Redirect::route('/login', ['oldUrl' => $url]); // Pass the target url
  }
}

答案 2 :(得分:0)

将auth中间件设置为购物车路线。登录后,中间件检查身份验证和目标页面上的重定向(例如:购物车)。如果你使用laravel 5.4。购物车路线应该像(例如)Route::post('cart','cartController@cart')->middleware('auth')