Python实现带黑名单机制的用户登录验证系统
本文介绍使用Python实现的用户登录验证程序,核心功能包括用户名输入、黑名单检测、用户有效性校验及密码验证。程序限制用户最多3次输入机会,连续输错3次将自动把该用户名加入黑名单文件并禁止再次登录。通过分解为login、inquire_blacklist等四个函数,确保代码结构清晰且易于维护。
本文分享了一个使用Python编写的模拟用户登录验证的完整代码示例,供读者参考学习。
1. 功能简介
该程序模拟了完整的用户登录验证流程,涵盖用户名输入、黑名单状态检测、用户有效性判断以及密码输入与验证环节。系统设定:用户在3次以内输入正确密码即可成功登录;若连续输错3次密码,则判定为登录失败,并将该用户名记录至黑名单文件中,此后该用户将被锁定,无法再次尝试登录。
2. 实现方法
本程序基于Python语言开发,采用模块化设计思想,将各项功能拆解并封装为独立的函数,以提升代码的可读性和可维护性。主要实现了以下四个核心函数:
login():主登录函数,负责协调用户名检测与密码验证流程。 inquire_blacklist(name):用于查询指定用户名是否存在于黑名单中。 inquire_userlist(name):用于查询指定用户名是否存在于注册用户名单中,若存在则返回对应密码,否则返回None。 add_blacklist(name):用于将指定用户名追加写入黑名单文件。 函数调用逻辑如下:程序首先运行login()函数,提示用户输入用户名;随后调用inquire_blacklist(name)进行黑名单检测;若用户不在黑名单中,则调用inquire_userlist(name)判断用户名有效性,若有效则获取存储的密码并与用户输入的密码进行比对验证;若连续3次密码输入错误,则调用add_blacklist(name)将该用户名添加至黑名单。
3. 流程图

4. 代码实现
# Author:Byron Li
import os
BASE_DIR = os.path.dirname(__file__) #获取文件目录路径
userlist='userlist.txt' #存取已注册用户名单文件,包括用户名和密码
blacklist='blacklist.txt' #存取锁定用户的黑名单文件
userlist_path = os.path.join(BASE_DIR,userlist) #注册用户名单文件路径
blacklist_path = os.path.join(BASE_DIR,blacklist) #黑名单文件路径
#---------------------------登陆函数(主函数)--------------------------
def login(): #登陆函数
username = input("请输入用户名:")
while(True):
if inquire_blacklist(username): #查询输入用户名是否在黑名单中
print("不好意思,此用户名\"%s\"已被锁定,禁止登陆!"%username)
return False
else:
user_password = inquire_userlist(username) #查询输入用户名是否存在注册用户名单中,若存在则返回该用户密码
if user_password:
for i in range(3):
password = input("请输入密码:") if i==0 else input("密码输入错误,请重新输入密码:")
if password==user_password:
print('欢迎%s登陆!'%username)
return True
else:
print("您已经连续输错密码3次,用户名将被锁定,禁止再登陆!")
add_blacklist(username) #添加用户名到黑名单文件
return False
else:
username = input('无效的用户名,请重新输入:')
# ------------------------------------------------------------
#-----------------查询黑名单函数-------------------------------
def inquire_blacklist(name): #查询用户名是否在黑名单中
with open(blacklist_path, 'r') as f:
for line in f:
if name==line.strip():
return True
return False
# -------------------------------------------------------------
#-----------------------查询用户名函数--------------------------
def inquire_userlist(name): #查询用户名是否在注册用户名单中
with open(userlist_path, 'r') as f:
for line in f:
[username,password] = line.split()
if name==username:
return password
return None
# ------------------------------------------------------------
#-----------------------------添加黑名单函数--------------------
def add_blacklist(name): #添加用户名到黑名单文件
with open(blacklist_path, 'a') as f:
f.write(str(name)+'\n')
return True
# ------------------------------------------------------------------------------
if login(): #执行登陆函数
print('登陆成功!'.center(47,'*'))
else:
print('登陆失败!'.center(47,'*'))
以上就是本文的全部内容,希望上述代码和分析能对读者的学习有所帮助,同时也欢迎大家继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













