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运行报错UnicodeDecodeError的解决方法
Jun 07 Python
基于python爬虫数据处理(详解)
Jun 10 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
详解Python循环作用域与闭包
Mar 21 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
Django 批量插入数据的实现方法
Jan 12 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
深入理解Tensorflow中的masking和padding
Feb 24 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 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
Javascript Math对象
2009/08/13 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
JS实现图片切换效果
2018/11/17 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
python备份文件的脚本
2008/08/11 Python
9种python web 程序的部署方式小结
2014/06/30 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python实现批量下载图片的方法
2015/07/08 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
python随机数分布random均匀分布实例
2019/11/27 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
仓库保管员岗位职责
2013/12/20 职场文书
医德医风个人总结
2015/02/28 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
实习报告怎么写
2019/06/20 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python