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图像处理之镜像实现方法
May 30 Python
详解Python中的Cookie模块使用
Jul 06 Python
深入理解NumPy简明教程---数组2
Dec 17 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
解决python3 pika之连接断开的问题
Dec 18 Python
Python上下文管理器用法及实例解析
Nov 11 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
Python绘图之二维图与三维图详解
Aug 04 Python
python selenium xpath定位操作
Sep 01 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
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
详解Python中的条件判断语句
2015/05/14 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
Python中SQLite如何使用
2020/05/27 Python
python 带时区的日期格式化操作
2020/10/23 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
高级工程师岗位职责
2013/12/15 职场文书
经典大学生求职信范文
2014/01/06 职场文书
升职感谢信
2015/01/22 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
MySQL创建定时任务
2022/01/22 MySQL