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 smtplib模块自动收发邮件功能(一)
May 22 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
使用python模拟高斯分布例子
Dec 09 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
Python Http请求json解析库用法解析
Nov 28 Python
python statsmodel的使用
Dec 21 Python
python 爬取腾讯视频评论的实现步骤
Feb 18 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生成带有雪花背景的验证码
2006/10/09 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
Python语言的12个基础知识点小结
2014/07/10 Python
Python 内置函数complex详解
2016/10/23 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Django的models中on_delete参数详解
2019/07/16 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
导购员的岗位职责
2014/02/08 职场文书
货车司机岗位职责
2014/03/18 职场文书
《刷子李》教学反思
2016/02/20 职场文书