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的框架中为MySQL实现restful接口的教程
Apr 08 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
python3爬取数据至mysql的方法
Jun 26 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
Python gevent协程切换实现详解
Sep 14 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 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实现Socket服务器的代码
2008/04/03 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
详细分析React 表单与事件
2020/07/08 Javascript
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
python实现年会抽奖程序
2019/01/22 Python
Python 3 判断2个字典相同
2019/08/06 Python
django 模版关闭转义方式
2020/05/14 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
汽车技术服务英文求职信范文
2014/01/02 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
工程售后服务承诺书
2014/05/21 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
离婚案件原告代理词
2015/05/23 职场文书
灵魂歌王观后感
2015/06/17 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书