[优化]登录错误次数超过6次将锁定10分钟

This commit is contained in:
yangjian 2021-12-24 15:12:10 +08:00
parent 38a9509546
commit 32bb292491

View File

@ -66,17 +66,40 @@ def log_in(request):
if checkcode.lower() != request.session['CheckCode'].lower():
errormsg = _('验证码错误!')
return render(request, 'login.html', locals())
# 验证登录次数
if 'LoginLock' not in request.session.keys():
request.session['LoginNum'] = 1 # 重试次数
request.session['LoginLock'] = False # 是否锁定
request.session['LoginTime'] = datetime.datetime.now().timestamp() # 解除锁定时间
verify_num = request.session['LoginNum']
if verify_num > 5:
request.session['LoginLock'] = True
request.session['LoginTime'] = (datetime.datetime.now() + datetime.timedelta(minutes=10)).timestamp()
verify_lock = request.session['LoginLock']
verify_time = request.session['LoginTime']
# 验证是否锁定
# print(datetime.datetime.now().timestamp(),verify_time)
if verify_lock is True and datetime.datetime.now().timestamp() < verify_time:
errormsg = _("操作过于频繁请10分钟后再试")
request.session['LoginNum'] = 0 # 重试次数清零
return render(request, 'login.html', locals())
if username != '' and pwd != '':
user = authenticate(username=username,password=pwd)
if user is not None:
if user.is_active:
login(request,user)
request.session['LoginNum'] = 0 # 重试次数
request.session['LoginLock'] = False # 是否锁定
request.session['LoginTime'] = datetime.datetime.now().timestamp() # 解除锁定时间
return redirect('/')
else:
errormsg = _('用户被禁用!')
return render(request, 'login.html', locals())
else:
errormsg = _('用户名或密码错误!')
request.session['LoginNum'] += 1
return render(request, 'login.html', locals())
else:
errormsg = _('用户名或密码未输入!')