'require', 'account' => 'require', 'password' => 'require|checkPassword', ]; protected $message = [ 'account.require' => '请输入账号', 'password.require' => '请输入密码', 'password.checkPassword' => '账号或密码错误', 'terminal.require' => '客户端参数缺失' ]; /** * @notes 密码验证 * @param $password * @param $other * @param $data * @return bool|string * @author 段誉 * @date 2022/3/9 18:54 */ public function checkPassword($password, $other, $data) { //后台账号安全机制,连续输错后锁定,防止账号密码暴力破解 $SafeCache = new KefuAccountSafeCache(); if (!$SafeCache->isSafe()) { return '密码连续' . $SafeCache->count . '次输入错误,请' . $SafeCache->minute . '分钟后重试'; } $kefu = Kefu::alias('k')->field([ 'a.password', 'a.disable' => 'admin_disable', 'k.disable' => 'kefu_disable' ]) ->join('admin a', 'k.admin_id = a.id') ->where(['a.account' => $data['account']]) ->findOrEmpty(); if ($kefu->isEmpty()) { return '用户不存在'; } if ($kefu['admin_disable'] || $kefu['kefu_disable']) { return '账号已禁用'; } if (empty($kefu['password'])) { $SafeCache->record(); return '客服不存在'; } $passwordSalt = Config::get('project.unique_identification'); if ($kefu['password'] !== create_password($password, $passwordSalt)) { $SafeCache->record(); return '密码错误'; } $SafeCache->relieve(); return true; } }