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

 更新时间:2018年12月14日 12:08:31   作者:我是马克思小清新  
这篇文章主要介绍了Python实现带参数的用户验证功能装饰器,结合实例形式分析了Python用户验证装饰器具体定义及使用技巧,需要的朋友可以参考下

本文实例讲述了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 Selenium 库的使用技巧

    python Selenium 库的使用技巧

    这篇文章主要介绍了python Selenium 库的使用技巧,帮助大家更好的理解和学习python Selenium 库,感兴趣的朋友可以了解下
    2020-10-10
  • python3如何将docx转换成pdf文件

    python3如何将docx转换成pdf文件

    这篇文章主要为大家详细介绍了python3如何将docx转换成pdf文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python实现将m3u8视频转换成mp4的操作步骤

    python实现将m3u8视频转换成mp4的操作步骤

    m3u8 是一种基于文本的媒体播放列表文件格式,通常用于指定流媒体播放器播放在线媒体流,MP4是一种基于MPEG-4 Part 12(2015)和MPEG-4 Part 14标准的数字多媒体容器格式,本文将给大家介绍python实现将m3u8视频转换成mp4的操作步骤,需要的朋友可以参考下
    2024-05-05
  • Python Paramiko模块的安装与使用详解

    Python Paramiko模块的安装与使用详解

    最近闲着学习python,看到有个paramiko模块,貌似很强大,所以从网上学习后总结了这篇文章,下面这篇文章就给大家介绍了Python中Paramiko模块的安装与使用,文中介绍的很详细,相信对大家的学习很有帮助,有需要的朋友们下面来一起看看吧。
    2016-11-11
  • Python提取PDF中的图片的实现示例

    Python提取PDF中的图片的实现示例

    本文主要介绍了Python提取PDF中的图片的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 使用Matplotlib 绘制精美的数学图形例子

    使用Matplotlib 绘制精美的数学图形例子

    今天小编就为大家分享一篇使用Matplotlib 绘制精美的数学图形例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python文件处理

    Python文件处理

    这篇文章主要介绍了Python文件处理的相关资料,需要的朋友可以参考下
    2016-02-02
  • Python探索之Metaclass初步了解

    Python探索之Metaclass初步了解

    本文先简单介绍了Python中的类,然后是主要内容,涉及Metaclass的相关内容,还是不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • python中15种3D绘图函数总结

    python中15种3D绘图函数总结

    这篇文章主要为大家详细介绍了python中15种3D绘图函数的用法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • 跟老齐学Python之从格式化表达式到方法

    跟老齐学Python之从格式化表达式到方法

    上一讲,主要介绍了用%表达的一种输出格式化表达式。在那一讲最后又拓展了一点东西,拓展的那点,名曰:格式化方法。因为它知识上是使用了str的format方法。
    2014-09-09

最新评论