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中对列表排序实例
Jan 04 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
python实现感知器算法详解
Dec 19 Python
Python单元测试实例详解
May 25 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
python中property属性的介绍及其应用详解
Aug 29 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
Python过滤序列元素的方法
Jul 31 Python
Pytest allure 命令行参数的使用
Apr 18 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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 问卷调查结果统计
2015/10/08 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
python通过链接抓取网站详解
2019/11/20 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
实习生自荐信范文
2013/11/13 职场文书
教学改革实施方案
2014/03/31 职场文书
农村文化活动总结
2014/08/28 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
礼貌问候语大全
2015/11/10 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Web应用开发TypeScript使用详解
2022/05/25 Javascript