Python实现带参数的用户验证功能装饰器示例


Posted in Python onDecember 14, 2018

本文实例讲述了Python实现带参数的用户验证功能装饰器。分享给大家供大家参考,具体如下:

user_list = [
  {'name': 'sb1', 'passwd': '123'},
  {'name': 'sb2', 'passwd': '123'},
  {'name': 'sb3', 'passwd': '123'},
  {'name': 'sb4', 'passwd': '123'}
]
# 初始状态,用来保存登陆的用户,
client_dic = {'username': None, 'login': False}
# 添加新功能
def auth(auth_type='filedb'):
  def auth_func(func):
    def wrapper(*args, **kwargs):
      print(auth_type)
      if auth_type == 'fildb':
      # 参数检查,判断是否有用户登录,如果有,不用验证,直接执行函数的功能
        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('用户名或者密码错误!')
      elif auth_type == 'pass':
        print('不知道什么验证方式')
        res = func(*args, **kwargs)
        return res
      else:
        print('一脸蒙蔽的验证方式')
        res = func(*args, **kwargs)
        return res
    return wrapper
  return auth_func
@auth(auth_type='filedb')
def index():
  print("欢迎来到主页")
@auth(auth_type='user')
def home(name):
  print("欢迎回家:%s" % name)
@auth(auth_type='pass')
def shoppping_car():
  print('购物车里有[%s,%s,%s]' % ('奶茶', '妹妹', '娃娃'))
print(client_dic)
index()
print(client_dic)
home('root')

运行结果:

{'username': None, 'login': False}
filedb
一脸蒙蔽的验证方式
欢迎来到主页
{'username': None, 'login': False}
user
一脸蒙蔽的验证方式
欢迎回家:root

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

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

Python 相关文章推荐
Python创建日历实例
Aug 21 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
Django验证码的生成与使用示例
May 20 Python
Python进程间通信之共享内存详解
Oct 30 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Python实现点阵字体读取与转换的方法
Jan 29 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python安装Flask环境及简单应用示例
May 03 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
python区块链实现简版工作量证明
May 25 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 #Python
用python爬取租房网站信息的代码
Dec 14 #Python
从运行效率与开发效率比较Python和C++
Dec 14 #Python
对python产生随机的二维数组实例详解
Dec 13 #Python
详解Python with/as使用说明
Dec 13 #Python
在python中以相同顺序shuffle两个list的方法
Dec 13 #Python
对python GUI实现完美进度条的示例详解
Dec 13 #Python
You might like
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
javascript抖动元素的小例子
2013/10/28 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
军训自我鉴定100字
2014/02/13 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
关于python类SortedList详解
2021/09/04 Python