Python实现带黑名单机制的用户登录验证系统

沿途有光
沿途有光
发布时间:2026-10-13| 3人浏览过
原创

本文介绍使用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,'*'))

以上就是本文的全部内容,希望上述代码和分析能对读者的学习有所帮助,同时也欢迎大家继续支持本站获取更多技术资源。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。