Python模拟用户登录验证


Posted in Python onSeptember 11, 2017

本文实例为大家分享了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.流程图

Python模拟用户登录验证

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 相关文章推荐
跟老齐学Python之眼花缭乱的运算符
Sep 14 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
深入理解Python中的super()方法
Nov 20 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
Tesserocr库的正确安装方式
Oct 19 Python
python使用suds调用webservice接口的方法
Jan 03 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
容易被忽略的Python内置类型
Sep 03 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
Python模拟三级菜单效果
Sep 11 #Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 #Python
Python 模拟购物车的实例讲解
Sep 11 #Python
python添加模块搜索路径方法
Sep 11 #Python
解决Django模板无法使用perms变量问题的方法
Sep 10 #Python
python实现批量修改文件名代码
Sep 10 #Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 #Python
You might like
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
学习ExtJS table布局
2009/10/08 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
webpack 处理CSS资源的实现
2019/09/27 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
Python 解析XML文件
2009/04/15 Python
Python实现的rsa加密算法详解
2018/01/24 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
Python @property原理解析和用法实例
2020/02/11 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
药店促销活动总结
2014/07/10 职场文书
简单租房协议书范本
2014/08/20 职场文书
实习介绍信范文
2015/05/05 职场文书
卖车协议书范文
2016/03/23 职场文书
微信小程序实现轮播图指示器
2022/06/25 Javascript