使用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