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格式化字符串实例总结
Sep 28 Python
编写Python的web框架中的Model的教程
Apr 29 Python
python实现分页效果
Oct 25 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
python使用glob检索文件的操作
May 20 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 array操作10个小技巧分享
2011/06/23 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
javascript中eval函数用法分析
2015/04/25 Javascript
javascript中this的四种用法
2015/05/11 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
安装python及pycharm的教程图解
2019/10/10 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Python可以用来做什么
2020/11/23 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
新闻专业应届生求职信
2013/10/31 职场文书
道路施工安全责任书
2014/07/24 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
工作保证书怎么写
2015/02/28 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
Java 数组内置函数toArray详解
2021/06/28 Java/Android