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基础教程之循环介绍
Aug 29 Python
Python实现二分法算法实例
Feb 02 Python
详解Python中内置的NotImplemented类型的用法
Mar 31 Python
Django 实现下载文件功能的示例
Mar 06 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
为什么python比较流行
Jun 19 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
python中的yield from语法快速学习
Nov 06 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
E路文章系统PHP
2006/12/11 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
python如何制作缩略图
2019/04/30 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
菜篮子工程实施方案
2014/03/08 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
助残日活动总结
2014/08/27 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
如何写辞职书
2015/02/26 职场文书
订货会主持词
2015/07/01 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL