我在Laravel 5.2中创建了新项目,并尝试修改Auth-Login的默认行为。
创建了一个名为postLogin的新方法,该方法在提交登录表单时被调用。
下面是为了在postRegister方法中实现登录限制而编写的代码。
protected function postLogin(AuthLoginRequest $request){
$credentials = $this->getCredentials($request);
$credentials['is_activated'] = "Yes";
$remember = $request->has('remember');
$throttles = $this->isUsingThrottlesLoginsTrait();
if ($throttles && $this->hasTooManyLoginAttempts($request)) {
return $this->sendLockoutResponse($request);
}
if (Auth::guard($this->getGuard())->attempt($credentials, $remember)) {
// add login in case of success
return $this->handleUserWasAuthenticated($request, $throttles);
} else {
if ($throttles) {
$this->incrementLoginAttempts($request);
}
return redirect("/login")
->withInput($request->only('email', 'remember'))
->withErrors([
$this->loginUsername() => $this->getFailedLoginMessage(),
]);
}
}
当我将缓存驱动程序保存到"文件时,这可以正常工作。" 当我将缓存驱动程序保留到" array"时,此代码不起作用。
当缓存驱动程序=" array"?
时,有人可以通知我我缺少什么吗?答案 0 :(得分:0)
您应该注意两件事:
ThrottlesLogins
驱动程序只是将任何缓存的值存储在内部数组中。请求之间不保留这些值。
如果您查看The values of ($id_from= 1 and $id_to= 4)
特征,您可以看到它在每次登录失败时递增缓存计数器。
这就是它不起作用的原因。
来自Laravel文档:
注意:阵列驱动程序通常用于运行测试以防止会话数据持久存在。