Laravel 5.2根据用户列重定向用户

时间:2016-05-12 07:18:17

标签: laravel redirect eloquent

我有一个多步形式。每次用户完成其中一个表单时,都会更新currentStep列。如果用户在注销之前没有完成所有四个表单,那么当他们重新登录时,他们将被重定向到他们中断的任何步骤。在我的AuthController中覆盖经过身份验证的方法是最好的方法吗?

protected function authenticated($request, $user)
{
    if ($user->step === '1') {
        return redirect()->intended('reg/step2');
    }

    return redirect()->intended('/');
}

1 个答案:

答案 0 :(得分:0)

是的,使用authenticated方法或覆盖redirectPath方法就足够了。

顺便说一下,我个人认为,如上述评论中所述;创建一个中间件来实现一个简单的功能需求,如:

  

"软件只有在用户登录软件时才会将用户重定向到他们停止的步骤。"

是我们应该避免的过度工程。正如您已经看到的,laravel本身使用特征中的方法在成功登录后重定向用户。不是中间件。

见最后一行(来自v.5.1 LTS):

/**
 * Send the response after the user was authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  bool  $throttles
 * @return \Illuminate\Http\Response
 */
protected function handleUserWasAuthenticated(Request $request, $throttles)
{
    if ($throttles) {
        $this->clearLoginAttempts($request);
    }

    if (method_exists($this, 'authenticated')) {
        return $this->authenticated($request, Auth::user());
    }

    return redirect()->intended($this->redirectPath());
}