1、从redis中获取用户登录的次数
#获取用户登录的ip
user_addr = request.remote_addr
try:
#从redis中获取该ip的登录次数
sccess_num = redis_store.get('login_error_num_%s' % user_addr)
except Exception as e:
current_app.logger.error(e)
else:
#判断用户ip是否超过5次(LOGIN_ERROR_TIMES自己定义的常量,为5次)
if sccess_num is not None and int(sccess_num) >= constans.LOGIN_ERROR_TIMES:
return jsonify(status=4021,msg='登录失败次数过多,请稍后再试')
2、设置redis缓存时间
#查询手机号码和密码是否一致
user = User.query.filter_by(mobile=mobile,password=password).first()
#如果存在,就登录成功
if user:
return jsonify(status=200,msg='登录成功')
else:
#不存在 就设置将用户的ip设置缓存,表示失败,
#incr()这个函数表示先被初始化为 0 ,然后再执行 INCR 操作,如果存在,就自动加1,自己也可以指定加的次数
redis_store.incr('login_error_num_%s' % user_addr)
#设置缓存时间(LOGIN_ERROR_FORBID_TIME为常量,表示设置的时间 为600 单位是秒)
redis_store.expire('login_error_num_%s' % user_addr,constans.LOGIN_ERROR_FORBID_TIME)