使用Python编写登陆认证小程序、用户连续 3 次输入密码错误即锁定用户。
############# start ###############
#!/usr/bin/env python
import os
import sys
#
os.system('clear')
userfile = file('user_id.txt', 'r+')
userlist = []
userdict = {}
if os.path.isfile("user_id.txt"):
pass
else:
print '没有定义用户的文件!'
sys.exit
#userfile.readlines()
for userline in userfile:
useritem = userline.strip()
#生成系统的用户列表
value_useritem = useritem.split(';')
#基本判断添加取出
value_username = value_useritem[0].strip()
value_passwd = value_useritem[1].strip()
lock_value = int(value_useritem[-1])
logincount_value = int(value_useritem[-2])
#生成用户名列表
userdict[value_username] = {'name':value_username, 'pwd':value_passwd, 'lockcount':logincount_value, 'locknum':lock_value}
flag = 'Ture'
counter = 0
while flag :
username = raw_input('请输入用户名:')
userpasswd = raw_input('请输入密码:')
#判断是否是系统用户
if username not in userdict.keys():
print '这个用户不存在!'
break
elif userdict[username]['locknum'] == 0 and userdict[username]['lockcount'] < 3 :
if userpasswd == userdict[username]['pwd'].strip():
print '欢迎登陆系统!!!'
break
else:
counter += 1
userdict[username]['lockcount'] += 1
userfile = file('user_id.txt', 'w+')
for t in userdict.values():
wuserlist = [str(t['name']), str(t['pwd']), str(t['lockcount']), str(t['locknum'])]
#wuserlist = t.values()
wuserlist_str = ';'.join(wuserlist)
#userfile.seek(0)
userfile.write(wuserlist_str + '\n')
if counter >2 :
print '密码输入错误达到3次,退出登陆。'
break;
else:
print '该用户账号已被锁定!'
sys.exit('请联系管理员解锁!')
continue;
userfile.close()
############# end ###############
其中,user_id.txt的格式为:
用户名;密码;错误密码次数;管理员手动锁定账户,如下:
[root@docker day1]# cat user_id.txt
hejp;123;0;0
test;456;0;0
用户hejp输入三次密码错误后,会在user_id.txt里显示错误密码次数为3,此时该用户锁定,只要把它改为0后就能解锁。
[root@docker day1]# cat user_id.txt
hejp;123;3;0
test;456;0;0