laravel丢失URL参数

时间:2018-09-17 07:27:41

标签: php laravel

我有一个laravel项目,该项目需要在URL中传递参数,但是如果用户登录,它将丢失参数,因为用户被重定向到主页。

示例网址如下:

laravel.dev/login?color=blue&number=12

但是,如果用户已登录,则可以从/ login重定向到/ home,这很好,但是我也需要在重定向上传递参数,因此看起来像这样:

laravel.dev/home?color=blue&number=12

有人可以帮我定义一下吗?

预先感谢

login function

1 个答案:

答案 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: enter image description here 第二步,我重写了LoginController中的sendLoginResponse函数。我不得不将redirect('/foo', ['color' => $request->get('color')])更改为redirect()->route('dashboard', ['color' => $request->get('color', 'white')])enter image description here

在最后一步,我调试了代码,看是否将颜色GET参数传输到覆盖的函数: enter image description here

结果如下: enter image description here