编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
帐号文件user.txt内容如下:
qaz 123
qwe 12345
qweqwr 12321424
......
锁文件user_lock.txt默认为空
一、只针对帐号文件里的用户进行判断并锁定,针对用户和密码各有三次错误重试机会。
流程图:
二、代码如下
1 # Author: zfh
2 # -*- coding:utf-8 -*-
3 import os,getpass,sys
4
5 i = 0
6 while i < 3: #开始循环,只要用异常登录不超过三次
7 name = input('请输入用户名:') #输入用户名
8
9 lock_file = open('user_lock.txt','r+') #打开锁定用户文件,检查登录用户是否被锁定(r+--读写),文件名前直接加路径
10 lock_list = lock_file.readlines() #逐行读取锁定用户记录文件
11
12 for lock_line in lock_list: #循环读取的锁定用户记录
13 lock_line = lock_line.strip('\n') #去掉换行符
14 if name == lock_line: #如果输入用户被锁定,直接退出
15 sys.exit('用户%s已锁定' %name) #输出提示用户被锁定
16
17 user_file = open('user.txt','r') #打开用户文件(r--只读)
18 user_list = user_file.readlines() #逐行读取用户文件
19
20 for user_line in user_list: #循环读取的用户记录
21 (user,passwd) = user_line.strip('\n').split() #分别获取帐号和密码信息
22 if name == user: #如用户名正常匹配
23 j = 0
24 while j < 3: #只要用户密码异常不超过3次就不断循环
25 password = getpass.getpass('请输入密码:') #输入隐藏密码,import getpass
26 if passwd == password: #如果密码正确,提示欢迎登录
27 # print('登录成功%s'%name)
28 sys.exit('用户%s登录成功'%name) #输出欢迎用户登录,正常退出
29 else:
30 if j != 2: #j!=2时继续循环
31 print('用户 %s 密码错误,请重新输入,还有 %d 次机会' % (name,2 - j))#提示还剩余0次机会了
32 j += 1 #密码输入错误后,循环值增加1
33 else: #密码输入三次错误后,将该用户追加到LOCK文件
34 lock_file.write(name +'\n')
35 sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name)
36 else:
37 pass #当用户没匹配时,跳过并继续循环
38 else:
39 if i != 2: #i!=2是循环
40 print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name,2 - i)) #提示还剩余0次机会了
41 i += 1 #当用户输入错误时,循环值增加1
42 else:
43 sys.exit('用户 %s 不存在,退出' % name) #用户输入三次错误后,异常退出
44
45 lock_file.close() #关闭LOCK文件
46 user_file.close() #关闭帐号文件