下面写三种方法来实现,用户在规定时间内,输入次数上限,封禁账号的功能。
第一种:使用redis完成用户封禁状态
第二种:使用mysql
第三种:使用文件
1.封禁用户流程图
第一种方法: Redis实现
# 声明登录方法
# @check_imgcode
async def get(self):
email = self.get_argument('email', None)
password = self.get_argument('password', None)
print(password)
num_mysql = None
# 读取数据库
try:
# 获取计数器(redis)
num = self.application.redis.get("num_"+email)
# # 如果存在
if num:
if int(num) > 5:
self.finish({'msg': '您已超过错误次数', "errcode": 3})
user = await self.application.objects.get(
UserModel.select().where((UserModel.email == email) & (UserModel.password ==
make_password(password))))
# 判断用户状态
if user.state == 0:
self.finish({'msg': '请激活您的邮箱', 'email': user.email, "errcode": 2})
else:
# 生成jwt
myjwt = MyJwt()
self.finish({'msg': '登陆成功', "token": myjwt.encode({'uid': user.id}), 'email': user.email, "errcode": 0})
except Exception as e:
return self.finish({'msg':'用户名或者密码错误',"errcode":1})
第二种