我有一个多步形式。每次用户完成其中一个表单时,都会更新currentStep列。如果用户在注销之前没有完成所有四个表单,那么当他们重新登录时,他们将被重定向到他们中断的任何步骤。在我的AuthController中覆盖经过身份验证的方法是最好的方法吗?
protected function authenticated($request, $user)
{
if ($user->step === '1') {
return redirect()->intended('reg/step2');
}
return redirect()->intended('/');
}
答案 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());
}