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中self原理实例分析
Apr 30 Python
python文件操作之目录遍历实例分析
May 20 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
基于python if 判断选择结构的实例详解
May 06 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
解析PyCharm Python运行权限问题
Jan 08 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
Django全局启用登陆验证login_required的方法
Jun 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
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php-fpm配置详解
2014/02/12 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
图片完美缩放
2006/09/07 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python错误处理详解
2014/09/28 Python
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
详解python中的文件与目录操作
2017/07/11 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
活动宣传策划方案
2014/05/23 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android