Python使用装饰器模拟用户登陆验证功能示例

yipeiwu_com6年前Python基础

本文实例讲述了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函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

Python实现从log日志中提取ip的方法【正则提取】

本文实例讲述了Python实现从log日志中提取ip的方法。分享给大家供大家参考,具体如下: log日志内容如下(myjob.log): 124.90.53.68 - - [05/F...

python 图片验证码代码

下面是一个实战项目的结果。 复制代码 代码如下:#coding: utf-8 import Image,ImageDraw,ImageFont,os,string,random,Imag...

tensorflow实现简单的卷积神经网络

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 一.知识点总结 1.  卷积神经网络出现的初衷是降低对图像的预处理,避免建立复杂...

Python多进程并发与多线程并发编程实例总结

本文实例总结了Python多进程并发与多线程并发。分享给大家供大家参考,具体如下: 这里对python支持的几种并发方式进行简单的总结。 Python支持的并发分为多线程并发与多进程并发...

Python实现线程状态监测简单示例

Python实现线程状态监测简单示例

本文实例讲述了Python实现线程状态监测。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- from threading import Thread...