标签:用户名 接口 password import please
Python 模拟登陆-验证用户名和密码
1. 如果输入错误,则输出用户名或密码错误;
2. 如果成功,则输出欢迎,xxx!
3. 三分钟内累计错误三次默认用户被锁, 三分钟后自动解锁继续验证。
简单代码如下:
import getpass
import datetime
user_pwd_dict = {}
user_login_sum_dict = {}
with open(‘user_pwd‘, ‘r‘) as obj: # 读取用户名密码文件(文件格式在本文底);
while True: # 无限循环,当输入用户名和密码均正确方可退出循环;
name = input("\nplease input your username:")
pwd = getpass._raw_input("please input your password:")
for line in obj: # 遍历文件读出用户名和密码,生成 user_pwd_dict 列表;
new_line = line.strip(‘\n‘)
line_list = new_line.split(‘ ‘)
user_pwd_dict[line_list[0]] = line_list[1]
if name in user_pwd_dict.keys(): # 1.1 判断用户名,如果用户名存在执行以下
if pwd == user_pwd_dict[name]: # 2.1 判断密码且密码正确
if name in user_login_sum_dict.keys() and
user_login_sum_dict.get(name)[0]==1:
# 3.1 判断用户输错次数,如果是3次,提示被锁
end_time=datetime.datetime.now()
dif_time = (end_time-start_time).seconds
if dif_time < 180: # 4.1 判断被锁时间间隔,如果不超过3分钟
(180s)则提示被锁(为方便测试可将时间缩短)
print(‘该用户 %s 超过允许次数3次被锁,请稍后重试‘ % name)
else: # 4.2 如果超过3分钟(180s)则提示登录成功并退出程序
print(‘\n welcome %s‘ % name)
break
else: # 3.2 如果密码正确且未被锁定则提示登录成功并退出程序
print(‘\n welcome %s‘ % name)
break
else: # 2.2 密码错误执行以下
if name in user_login_sum_dict.keys(): # 5.1 判断用户名是否在被锁字典中
if user_login_sum_dict.get(name)[0]==1: # 6.1 判断用户输错次数,
如果是3次执行以下
end_time=datetime.datetime.now()
dif_time = (end_time-start_time).seconds
if dif_time < 180: # 7.1 输错达3次且不超3分钟(180s)提示被锁,
继续循环(为方便测试可将时间缩短)
print(‘该用户 %s 超过允许次数3次被锁,请稍后重试‘ % name)
else: # 7.2 输错达3次超过3分钟(180s),
提示密码错误并重新赋值,继续循环
print(‘\n password isn`t right‘)
start_time = datetime.datetime.now()
user_login_sum_dict[name]=[0,start_time]
print(user_login_sum_dict[name])
else: # 6.2 用户输错3次以内,则执行以下
end_time=datetime.datetime.now()
dif_time = (end_time-start_time).seconds
if dif_time < 180: # 8.1 用户输错3次以内并在3分钟以内,
提示密码错误并累计错误次数加1次,继续循环
print(‘\n password isn`t right‘)
user_login_sum_dict[name][0]+=1
else: # 8.2 用户输错3次以内并超过3分钟,
提示密码错误并重新赋值,继续循环
print(‘\n password isn`t right‘)
start_time = datetime.datetime.now()
user_login_sum_dict[name]=[0,start_time]
print(user_login_sum_dict[name])
else: # 5.2 如果用户名未在被锁字典中则提示
密码不对且赋初始值,继续循环
print(‘\n password isn`t right‘)
start_time = datetime.datetime.now()
user_login_sum_dict[name]=[0,start_time]
print(user_login_sum_dict[name])
else: # 1.2 如果用户名不在字典中则提示用户名不存在,继续循环
print(‘\n this username doesn`t exist!‘)
-----------------------用户名密码文件格式如下------------------------
注:水平有限,本博文如有考虑不到之处还请多多指教共同学习,谢谢。
本文出自 “纷繁中享受技术的简单喜悦” 博客,请务必保留此出处http://51enjoy.blog.51cto.com/8393791/1732774
标签:用户名 接口 password import please
原文地址:http://51enjoy.blog.51cto.com/8393791/1732774