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 21 Python
Python使用稀疏矩阵节省内存实例
Jun 27 Python
python的Template使用指南
Sep 11 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
Python unittest模块用法实例分析
May 25 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
python3中eval函数用法使用简介
Aug 02 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
Tensorflow获取张量Tensor的具体维数实例
Jan 19 Python
Python cookie的保存与读取、SSL讲解
Feb 17 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
php5.2.0内存管理改进
2007/01/22 PHP
PHP学习 变量使用总结
2011/03/24 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
Python 项目转化为so文件实例
2019/12/23 Python
Python生成词云的实现代码
2020/01/14 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python基于当前时间批量创建文件
2020/05/07 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
英文自荐信
2013/12/19 职场文书
工程班组长岗位职责
2013/12/30 职场文书
高级工程师英文求职信
2014/03/19 职场文书
村党支部公开承诺书
2014/05/29 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书