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 第一步 hello world
Sep 25 Python
python将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
对于Python异常处理慎用“except:pass”建议
Apr 02 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
使用python模拟命令行终端的示例
Aug 13 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 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 删除cookie和浏览器重定向
2009/03/16 PHP
PHP 引用文件技巧
2010/03/02 PHP
php数组去重复数据示例
2014/02/25 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
php防止sql注入简单分析
2015/03/18 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
Angular排序实例详解
2017/06/28 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
python链接Oracle数据库的方法
2015/06/28 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
详解python运行三种方式
2019/05/13 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
财务会计专业应届毕业生求职信
2013/10/18 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
要账委托书范本
2014/09/15 职场文书
党校学习个人总结
2015/02/15 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书