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 ZipFile模块详解
Nov 01 Python
Python+微信接口实现运维报警
Aug 27 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
python requests post多层字典的方法
Dec 27 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python中断多重循环的思路总结
Oct 04 Python
基于python实现文件加密功能
Jan 06 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 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 stream_context_create()作用和用法分析
2011/03/29 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
js日期联动示例
2014/05/02 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Python入门篇之对象类型
2014/10/17 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
遇到的Mysql的面试题
2014/06/29 面试题
护理学中专毕业生求职信
2013/11/11 职场文书
派出所所长先进事迹
2014/05/19 职场文书
音乐节策划方案
2014/06/09 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书