JAVA网络爬虫
HttpClient

导航

 
  1. 尝试获取用户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"超过请求次数, 请稍后重试")
    
  2. 设置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"用户名或密码错误")
    
posted on 2019-05-24 15:15  gmlgxx  阅读(256)  评论(0)    收藏  举报