我有一个laravel项目,该项目需要在URL中传递参数,但是如果用户登录,它将丢失参数,因为用户被重定向到主页。
示例网址如下:
laravel.dev/login?color=blue&number=12
但是,如果用户已登录,则可以从/ login重定向到/ home,这很好,但是我也需要在重定向上传递参数,因此看起来像这样:
laravel.dev/home?color=blue&number=12
有人可以帮我定义一下吗?
预先感谢
答案 0 :(得分:2)
欢呼@info,
您可以从特征“ Illuminate \ Foundation \ Auth \ AuthenticatesUsers”中覆盖函数“ sendLoginResponse(Request $ request)”:
/**
* Send the response after the user was authenticated.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
打开您的 LoginController (app / Http / Controllers / Auth / LoginController.php)并添加覆盖功能,并将get参数添加到重定向中:
/**
* Send the response after the user was authenticated.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
return $this->authenticated($request, $this->guard()->user())
?: redirect('/foo', ['color' => $request->get('color')]);
}
该代码未经测试。希望它对我们有帮助。
首先,我在登录表单中添加了参数color:
第二步,我重写了LoginController中的sendLoginResponse函数。我不得不将redirect('/foo', ['color' => $request->get('color')])
更改为redirect()->route('dashboard', ['color' => $request->get('color', 'white')])
: