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 25 Python
python微信公众号开发简单流程
Mar 23 Python
使用python生成目录树
Mar 29 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
Python数据类型之List列表实例详解
May 08 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python 实现识别图片上的数字
Jul 30 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
Django 路由层URLconf的实现
Dec 30 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
python链表类中获取元素实例方法
Feb 23 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
vue devtools的安装与使用教程
2018/08/08 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
Python中除法使用的注意事项
2014/08/21 Python
python服务器端收发请求的实现代码
2014/09/29 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
python3对接mysql数据库实例详解
2019/04/30 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
美国折扣网站:jClub
2017/08/07 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
P/Invoke是什么
2015/07/31 面试题
个人简历自我评价八例
2013/10/31 职场文书
职称评定自我鉴定
2014/03/18 职场文书
优秀教师单行材料
2014/12/16 职场文书