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实现进程间通信简单实例
Jul 23 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
python中调试或排错的五种方法示例
Sep 12 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
Python 实现向word(docx)中输出
Feb 13 Python
Python制作一个仿QQ办公版的图形登录界面
Sep 22 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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
mysql+php分页类(已测)
2008/03/31 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JSON格式化输出
2014/11/10 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python生成pdf文件的方法
2014/08/04 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python中扩展包的安装方法详解
2017/06/14 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
Pytorch的mean和std调查实例
2020/01/02 Python
基于python实现对文件进行切分行
2020/04/26 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
美国校园市场:OCM
2017/06/08 全球购物
项目投资建议书
2014/05/16 职场文书
审计班子对照检查材料
2014/08/27 职场文书
学习经验交流会策划书
2015/11/02 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
合作意向书怎么写
2019/06/24 职场文书
Win10 Anaconda安装python-pcl
2022/04/29 Servers