账号锁定功能
Posted anle123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了账号锁定功能相关的知识,希望对你有一定的参考价值。
利用redis数据库实现账户锁定
- 需求 –> 用户输入密码错误,连续错误三次以上,封锁账号在设定时间内不能再登录,直至封锁时间结束后用户才能再登录。
- 首先我们用到redis中的 lpush – expire – ttl – llen 其方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 COPY # 建立连接连接 host = "localhost" port = 6379 r = redis.Redis(host=host,port=port) #用户名 username = ‘123‘ #账号密码输入错误5次后锁住账号逻辑 #列表操作 r.lpush(username,1) #设置过期时间,单位是秒 r.expire(username,30) #打印过期时间 print(r.ttl(username)) #打印列表长度 print(r.llen(username)) if r.llen(username) > 3: print(‘你的账号被锁定‘)
以下是在项目中实现锁定功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 COPY #登录接口 class Login(APIView): def get(self,request): #接收参数 username = request.GET.get(‘username‘,None) password = request.GET.get(‘password‘,None) #验证验证码 if code != redis_code: return Response({‘code‘:403,‘message‘:‘验证码错误‘}) #如果用户的列表长度大于等于3 if r.llen(username) >= 3: return Response({‘code‘:403,‘message‘:‘你的账号已被锁定‘}) #查询用户数据 user = User.objects.filter(username=username).first() if user: #比较密码是否一致,如果一致则登录成功 if user.password == make_password(password): return Response({‘code‘:200,‘message‘:‘登陆成功‘,‘uid‘:user.id,‘username‘:user.username}) #不一致则计数加1,返回密码错误 else: r.lpush(username,1) r.expire(username,30) return Response({‘code‘:403,‘message‘:‘用户名或密码错误‘}) else: return Response({‘code‘:403,‘message‘:‘用户名或密码错误‘})
以上是关于账号锁定功能的主要内容,如果未能解决你的问题,请参考以下文章
通过游戏学python 3.6 第一季 第七章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账