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中实现参数类型检查的简单方法
Apr 21 Python
python字符串过滤性能比较5种方法
Jun 22 Python
用Python实现随机森林算法的示例
Aug 24 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Django csrf 验证问题的实现
Oct 09 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
python中强大的format函数实例详解
Dec 05 Python
django的ORM模型的实现原理
Mar 04 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
python中怎么表示空值
Jun 19 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入门的学习方法
2007/01/02 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
JS 实现导航栏悬停效果
2013/09/23 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
让python json encode datetime类型
2010/12/28 Python
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
python3实现随机数
2018/06/25 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
实习销售业务员自我鉴定
2013/09/21 职场文书
中文系学生自荐信范文
2013/11/13 职场文书
行政经理的岗位职责
2013/11/23 职场文书
小学英语教学反思案例
2014/02/04 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
讲解员培训方案
2014/05/04 职场文书
招标授权委托书样本
2014/09/23 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
Java实现简单小画板
2022/06/10 Java/Android