基于REDIS做登录错误锁定用户

很多情况下都需要对用户在登录系统时的错误次数进行记录,防止暴力破解,而传统的作法是记录在DB中,并且需要在一定条件时清理这些数据。而我们采用REDIS可以很简单很高效的解决这个问题。

我们只需要在用户登录时,将用户登录的账号,进行计数,并设置一定的有效期,过期时由REIDS自动清理;在每次登录时先检查一下REIDS中此账号已登录的次数,超过限制则禁用用户登录。

下面,直接上一段我的代码:

if (empty($post[‘phone’]) || empty($post[‘code’])) {
return array(‘code’ => ‘Error’, ‘msg’ => ‘手机号或验证码不能为空’);
}
$phone = addslashes(trim($post[‘phone’]));
$code = addslashes(trim($post[‘code’]));

if (!is_phone($phone)) {
return array(‘code’ => ‘Error’, ‘msg’ => ‘手机号格式不正确’);
}

//限制5分钟内连续5次错误时,锁定帐号5分钟 开始
$d[] = time();
$userLoginLock = $this->cache_Obj->get(‘userLoginLock_’ . $phone);
if (!empty($userLoginLock)) {
$d = array_merge($d, $userLoginLock);
}
$this->cache_Obj->set(‘userLoginLock_’ . $phone, $d, 60 * 5); //5分钟有效
if (count($userLoginLock) > 5) {
return array(‘code’ => ‘Error’, ‘msg’ => ‘你的帐号已连续’ . count($userLoginLock) . ‘次登录错误,已被系统锁定5分钟!’);
}
//限制5分钟内连续5次错误时,锁定帐号5分钟 结束

….

这里是去DB是查询用户存不存在


$this->cache_Obj->del(‘userLoginLock_’ . $phone); //登录成功时,删除登录锁

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » 基于REDIS做登录错误锁定用户