登录后,根据引用路由将用户重定向到特定路由

时间:2017-08-14 06:25:43

标签: php laravel redirect routes

AuthController.php我有一个功能:

public function authenticated( \Illuminate\Http\Request $request, \App\User $user ) 
{
    return redirect()->intended($this->redirectPath());
}

我在每个页面都有登录弹出窗口,因此如果用户从页面登录:/demo-page并登录,他们将在登录后重定向回同一页面(/demo-page)。 这绝对符合预期。这里没问题。

<击>

我的问题:如何根据用户调用登录的当前路由将用户重定向到特定页面。

逻辑是这样的:

if referring route('indexpage'){
    redirect to route('homepage');
}
else any other route other than index page{
    return redirect()-> to previous url
}

所以以前我在查看我的AuthController文件。但我忘了我已经更改了LoginController重定向

public function __construct()
    {
        $this->redirectTo = url()->previous(); //Redirect the user to previous page after login
        $this->middleware('guest')->except('logout');

    }

我需要做什么:

假设有3条路线。 A,B和C

首先,用户登陆 A 页面 如果他在那里登录,他必须被重定向到页面 B

如果用户位于 B 页面并且他在那里登录,则必须将其重定向回页面 B

如果用户位于 C 页面并且他在那里登录,则必须将其重定向回页面 C

注意:登录是每个页面标题上的常用表单。

目前有哪些工作?

return redirect()->intended($this->redirectPath());这个, A中的用户重定向到A, B到B. 和 C至C.

2 个答案:

答案 0 :(得分:0)

这应该有效:

pkg_resources.DistributionNotFound: boto

阅读API here

答案 1 :(得分:-1)

您可以在限制访问自动化用户的页面上执行的操作,使用此代码设置名为accesscheck的URL参数:

$restrictGoTo = "login.php";
if (!((isset($_SESSION['Username'])) && 
(isAuthorized("",$authorizedUsers, $_SESSION['Username'], 
$_SESSION['UserGroup'])))) {   

  $qsChar = "?";
  $referrer = $_SERVER['PHP_SELF'];
  if (strpos($restrictGoTo, "?")) $qsChar = "&";
  if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 
  0) 
  $referrer .= "?" . $_SERVER['QUERY_STRING'];
  $restrictGoTo = $restrictGoTo. $qsChar . "accesscheck=" . 
  urlencode($referrer);
  header("Location: ". $restrictGoTo); 
}

然后在您的登录页面上。您需要做的第一件事是检查是否存在url参数accesscheck。它是,登录后重定向到页面,否则,转到指定的页面。

if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}


//run your login script and if the user is authenticated proceed to the 
previous url or the success page:

    $redirectLoginSuccess = "yourpage.php";
  if (isset($_SESSION['PrevUrl']) && true) {
      $redirectLoginSuccess = $_SESSION['PrevUrl']; 
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }

即使你在网址

中使用参数,这也有效