Python使用装饰器模拟用户登陆验证功能示例
作者:我是马克思小清新 发布时间:2022-03-04 20:56:52
标签: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程序设计有所帮助。
来源:https://blog.csdn.net/qq_33531400/article/details/79324551
0
投稿
猜你喜欢
- 用ASP判断一个字符串中只包含字母和数字要怎么做啊? for s=1 to len(trim(use
- v-model的基本用法一、本节说明前面的章节我们学习了v-bind指定,可以通过模型数据去影响视图。我们都知道VUE是支持双向数据绑定的,
- 一、数据地址实体抽取的目的及问题对数据的地址进行实体识别,主要作用是确定我们的数据主体最终可以归到哪一行政单位,从而在各行政单位上对数据主体
- ASP具备动态输出任一Office应用程序文件格式的功能。在开始编写代码之前,我们首先需要做的就是设置正确的文件类型,因为浏览器需要知道如何
- 如下所示:#!/usr/bin/python# coding=utf-8import jsonfrom urllib.request imp
- #!/usr/bin/env python# coding=utf-8#----------------------------------
- 问题:将文件夹a下任意命名的10个文件修改为如下图所示文件?代码:#coding:utf-8import ospath = "./
- 一、前言html和css的学习大致完成,我们进入重要的JavaScript学习阶段二、什么是JavaScript,有什么用?Javascri
- 模板引擎的思想是来源于MVC(Model View Controller)模型,即模型层、视图层、控制器层。在Web端,模型层为数据库的操作
- 数据加密是一种保护数据安全的技术,通过对数据进行编码,使得未经授权的用户无法读取或改动数据。加密是通过使用加密算法和密钥实现的。加密算法是一
- 我就废话不多说了,大家还是直接看代码吧!#! usr/bin/python3.5# -*- coding:utf-8 -*-a = inpu
- 创建一个dataframe结构import pandas as pddf = pd.DataFrame( data
- 简介前几天捣鼓了一下Ubuntu,正是想用一下我旧电脑上的N卡,可以用GPU来跑代码,体验一下多核的快乐。还好我这破电脑也是支持Cuda的:
- 在操作系统的文件中,还存在着一种我们可以自己定义的文件属性。这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容。
- 本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单
- 前言:分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁
- Server对象主要是给编程人员提供一些方便的对象和属性。(1)ScriptTimeout属性:<%Server.ScriptTime
- 一、前言The DllPlugin and DllReferencePlugin provide means to split bundle
- 本文实例讲述了php实现在服务器端调整图片大小的方法。分享给大家供大家参考。具体分析如下:在服务器端完成图片大小的调整,会比在浏览器的处理有
- vue-cli遇到的eslint的坑报错Do not access Object.prototype method 'hasOwnP