Python使用装饰器模拟用户登陆验证功能示例


Posted in Python onAugust 24, 2018

本文实例讲述了Python使用装饰器模拟用户登陆验证功能。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#!python3
user_list = [
  {'name':'ad1','passwd':'123'},
  {'name':'ad2','passwd':'123'},
  {'name':'ad3','passwd':'123'},
  {'name':'ad4','passwd':'123'}
]
#初始状态,用来保存登陆的用户,
client_dic = {'username':None,'login':False}
#添加新功能
def auth_func(func):
  def wrapper(*args,**kwargs):
    #参数检查,判断是否有用户登录,如果有,不用验证,直接执行函数的功能
    if client_dic['username'] and client_dic['login']:
      res = func(*args,**kwargs)
      return res
    #输入用户名和密码
    username = input('用户名:').strip()
    passwd = input('passwd:').strip()
    #对比列表,检查用户名和密码是否正确
    for user_dic in user_list:
      if username == user_dic['name'] and passwd == user_dic['passwd']:
        client_dic['username'] = user_dic['name']
        client_dic['login'] = True
        res = func(*args,**kwargs)
        return res
    else:
      print('用户名或者密码错误!')
  return wrapper
@auth_func
def index():
  print("欢迎来到主页")
@auth_func
def home(name):
  print("欢迎回家:%s"%name)
@auth_func
def shoppping_car():
  print('购物车里有[%s,%s,%s]'%('奶茶','妹妹','娃娃'))
print(client_dic)
index()
print(client_dic)
home('root')

运行结果:

Python使用装饰器模拟用户登陆验证功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Python实现的文轩网爬虫完整示例
May 16 Python
Python字符串的一些操作方法总结
Jun 10 Python
django的model操作汇整详解
Jul 26 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
Python类反射机制使用实例解析
Dec 30 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
pytorch中的weight-initilzation用法
Jun 24 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
教你怎么用python实现字符串转日期
May 24 Python
Python日志模块logging基本用法分析
Aug 23 #Python
Python多继承原理与用法示例
Aug 23 #Python
Python抽象和自定义类定义与用法示例
Aug 23 #Python
Python引用计数操作示例
Aug 23 #Python
python实现括号匹配的思路详解
Aug 23 #Python
使用Python实现一个栈判断括号是否平衡
Aug 23 #Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 #Python
You might like
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php模板原理讲解
2013/11/13 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python如何快速实现分布式任务
2017/07/06 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
Python安装whl文件过程图解
2020/02/18 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
《匆匆》教学反思
2014/02/22 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
工作证明格式范文
2015/06/15 职场文书
民事调解协议书
2016/03/21 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书