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访问sqlserver示例
Feb 10 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python实现画出e指数函数的图像
Nov 21 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
基于python调用psutil模块过程解析
Dec 20 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
通过实例学习Python Excel操作
Jan 06 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 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入门基础之php代码写法
2011/12/30 PHP
JavaScript使用cookie
2007/02/02 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python快速查找算法应用实例
2014/09/26 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
python 实时遍历日志文件
2016/04/12 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python绘制随机网络图形示例
2019/11/21 Python
python机器学习库xgboost的使用
2020/01/20 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
美国批发供应商:Kole Imports
2019/04/10 全球购物
同学会邀请书大全
2014/01/12 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
客户答谢会致辞
2015/07/30 职场文书
python三子棋游戏
2022/05/04 Python