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系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Python base64编码解码实例
Jun 21 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
Django 5种类型Session使用方法解析
Apr 29 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
python中绕过反爬虫的方法总结
Nov 25 Python
python在package下继续嵌套一个package
Apr 14 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
中篇:安装及配置PHP
2006/12/13 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
thinkphp分页集成实例
2017/07/24 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python3多线程操作简单示例
2018/05/22 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
python sorted函数的小练习及解答
2019/09/18 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
CSS3实现时间轴效果
2016/07/11 HTML / CSS
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
自我鉴定模板
2013/10/29 职场文书
毕业生求职信
2014/06/10 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
python 逐步回归算法
2021/04/06 Python