Python使用装饰器模拟用户登陆验证功能示例


Posted in Python onAugust 24, 2018

本文实例讲述了Python使用装饰器模拟用户登陆验证功能。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#!python3
user_list = [
  {'name':'ad1','passwd':'123'},
  {'name':'ad2','passwd':'123'},
  {'name':'ad3','passwd':'123'},
  {'name':'ad4','passwd':'123'}
]
#初始状态,用来保存登陆的用户,
client_dic = {'username':None,'login':False}
#添加新功能
def auth_func(func):
  def wrapper(*args,**kwargs):
    #参数检查,判断是否有用户登录,如果有,不用验证,直接执行函数的功能
    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('用户名或者密码错误!')
  return wrapper
@auth_func
def index():
  print("欢迎来到主页")
@auth_func
def home(name):
  print("欢迎回家:%s"%name)
@auth_func
def shoppping_car():
  print('购物车里有[%s,%s,%s]'%('奶茶','妹妹','娃娃'))
print(client_dic)
index()
print(client_dic)
home('root')

运行结果:

Python使用装饰器模拟用户登陆验证功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中条件选择和循环语句使用方法介绍
Mar 13 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
python操作mysql数据库
Mar 05 Python
Sanic框架路由用法实例分析
Jul 16 Python
python多进程控制学习小结
Oct 31 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
django的model操作汇整详解
Jul 26 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
Python日志模块logging基本用法分析
Aug 23 #Python
Python多继承原理与用法示例
Aug 23 #Python
Python抽象和自定义类定义与用法示例
Aug 23 #Python
Python引用计数操作示例
Aug 23 #Python
python实现括号匹配的思路详解
Aug 23 #Python
使用Python实现一个栈判断括号是否平衡
Aug 23 #Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 #Python
You might like
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
在Python中使用SQLite的简单教程
2015/04/29 Python
python提取字典key列表的方法
2015/07/11 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
生物科学系大学生的自我评价
2013/12/20 职场文书
运动会广播稿200字
2014/01/15 职场文书
安全大检查反思材料
2014/01/31 职场文书
女娲补天教学反思
2014/02/05 职场文书
教师产假请假条
2014/04/10 职场文书
政治思想表现评语
2014/05/04 职场文书
横幅标语大全
2014/06/17 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书