目标
同一个用户名连续失败三次则锁定,不管用户名是否在,锁定后在下次运行脚本登录是同样是锁定状态。
使用文件存储用户名和密码信息,与文件里面的用户名密码进行认证对比
用户名不存在和密码错误提示不可以相同,登录成功,账号被禁用,密码错误,用户不存在需要有相关的提示信息。
Python脚本
#!/usr/bin/python
#coding:utf8
class Login():
def userInfo(self):
#将用户名密码信息文件处理成一个字典
with open("userinfo.txt", "r") as file:
userDict = {}
for i in file:
userList = i.split(":")
userDict.update({userList[0]:userList[1].rstrip()})
return userDict
def lock_userInfo(self):
#将否定的用户的文件处理成一个列表
with open("lock_userinfo.txt", "r") as file:
userList = []
for i in file:
userList.append(i.rstrip())
return userList
def lockUser(self, username):
#如果相同用户登录错误三次就调用此函数,将用户永久琐定,写入文件
with open("lock_userinfo.txt", "a") as file:
file.write(username + "\n")
def userLogin(self):
#登录
lockList = []
while True:
username = raw_input("请输入用户名: ")
password = raw_input("请输入用户密码: ")
if lockList.count(username) < 3:
lock = self.lock_userInfo()
user = self.userInfo()
if username not in lock:
if username in user:
if user[username] == password:
print("登录成功")
else:
lockList.append(username)
print("密码错误")
else:
lockList.append(username)
print("用名不存在")
else:
print("此用户已禁用")
else:
self.lockUser(username)
print("用户登录次数超过限制,已禁用")
if __name__ == "__main__":
login = Login()
login.userLogin()
脚本说明
1. 首先需要在脚本所在的目录下面创建两个文件lock_userinfo.txt和userinfo.txt。
2. userinfo.txt存入用户信息,一行一个用户,用户名和密码用冒号分开,不要有空格,如下所示。
3. lock_userinfo.txt为被否定的用户列表文件,初始为空,如果有同一用户登录出错三次就会被永久写入该文件,无法登录,解锁用户就是删除该文件里面的用户名。
执行结果
正确登录结果如下。
密码输入错误三次结果如下。
用户被琐后再登录结果如下。
用户名输入错误多次后结果如下。