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连接池实现示例程序
Nov 26 Python
python使用新浪微博api上传图片到微博示例
Jan 10 Python
python处理cookie详解
Feb 07 Python
使用python实现knn算法
Dec 20 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
Python对象的属性访问过程详解
Mar 05 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
简单了解Django项目应用创建过程
Jul 06 Python
详解Scrapy Redis入门实战
Nov 18 Python
django中websocket的具体使用
Jan 22 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
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
python操作MongoDB基础知识
2013/11/01 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python集合用法实例分析
2015/05/30 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python实现的knn算法示例
2018/06/14 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python实现按关键字筛选日志文件
2019/12/24 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
年度献血先进个人事迹材料
2014/02/14 职场文书
效能监察建议书
2014/05/19 职场文书
市场调查策划方案
2014/06/10 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
家属慰问信
2015/02/14 职场文书
同乡会致辞
2015/07/30 职场文书
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏