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对象体系深入分析
Oct 28 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
python之pandas用法大全
Mar 13 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
Flask框架工厂函数用法实例分析
May 25 Python
python字典的常用方法总结
Jul 31 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
python设置环境变量的作用整理
Feb 17 Python
python爬虫实现获取下一页代码
Mar 13 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 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/10/09 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
php微信开发之上传临时素材
2016/06/24 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python中尾递归用法实例详解
2015/04/28 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python实现翻转数组功能示例
2018/01/12 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python机器学习库xgboost的使用
2020/01/20 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
公司拓展活动方案
2014/02/13 职场文书
学生党员公开承诺书
2014/05/28 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python