-
尝试获取用户ip的登录次数(LOGIN_ERROR_MAX_TIMES==5), 从redis中获取
# 判断错误次数是否超过限制, 如果超过限制, 则返回 # redis记录: "access_num_请求的ip":"次数" # 获取用户的ip user_ip = request.remote_addr try: # redis 我们这里用string类型保存用户尝试次数, 所以获取也用string类型 access_num = redis_store.get("access_num_%s" % user_ip) except Exception as e: current_app.logger.error(e) else: # 错误上线5次, 限制它的ip if access_num is not None and int(access_num) >= LOGIN_ERROR_MAX_TIMES: return jsonify(errnum=RET.REQERR, errmsg=u"超过请求次数, 请稍后重试") -
设置redis缓存(缓存时间LOGIN_ERROR_FORBID_TIME)
# 判断用户是否存在或判断用户输入密码与数据库密码不一直 if user is None or user.check_password(password): # 如果验证失败, 记录错误次数, 返回信息 try: # incr 是直接帮我们自动正常次数累加1 redis_store.incr("access_num_%s" % user_ip) redis_store.expire("access_num_%s" % user_ip, LOGIN_ERROR_FORBID_TIME) except Exception as e: current_app.login.error(e) return jsonify(errnum=RET.DATAERR, errmsg=u"用户名或密码错误")
浙公网安备 33010602011771号