那是因为您正在覆盖登录函数,因此永远不会调用经过身份验证的函数。
如果你看一下这个特征:
public function login(Request $request)
{
$this->validateLogin($request);
// If the class is using the ThrottlesLogins trait, we can automatically throttle
// the login attempts for this application. We'll key this by the username and
// the IP address of the client making these requests into this application.
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
if ($this->attemptLogin($request)) {
return $this->sendLoginResponse($request);
}
// If the login attempt was unsuccessful we will increment the number of attempts
// to login and redirect the user back to the login form. Of course, when this
// user surpasses their maximum number of attempts they will get locked out.
$this->incrementLoginAttempts($request);
return $this->sendFailedLoginResponse($request);
}
正如你所看到的,该函数sendLoginResponse
是那个正在打电话的人authenticated
功能。
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
因此,在您的情况下,应该是这样的,重新生成会话并清除尝试:
return $this->sendLoginResponse($request);
或者如果您想直接跳至经过验证的功能:
return $this->authenticated($request, auth()->user());
你的函数应该是这样的:
public function login(Request $request)
{
if (Auth::attempt(['email' => $request->email, 'password' => $request->password, 'isActive' => '1']))
{
// Updated this line
return $this->sendLoginResponse($request);
// OR this one
// return $this->authenticated($request, auth()->user());
}
else
{
return $this->sendFailedLoginResponse($request, 'auth.failed_status');
}
}