python装饰器实现用户密码认证(简单初形)
Posted yangzhizong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python装饰器实现用户密码认证(简单初形)相关的知识,希望对你有一定的参考价值。
import time
current_user={‘user‘:None}
def auth(engine = ‘file‘):
def deco(func): #func=最初始的index和最初始的home
def wrapper(*args,**kwargs):
if current_user[‘user‘]:
#如果成立说明current_user里面已经有用户信息,说明用户已经登录过,满足条件
#即会执行调用index home函数
res = func(*args, **kwargs) #调用最原始的index 同样也调用最原始的home,
return res
user=input(‘输入你的用户名:‘).strip()
pwd=input(‘输入你的密码:‘).strip()
if engine == ‘file‘:
#基于文件的认证
if user == ‘yangzhizong‘ and pwd == ‘123‘:
print(‘认证成功‘)
#记录用户登录状态
current_user[‘user‘]=user
res = func(*args, **kwargs)
return res
else:
print(‘用户名密码错误‘)
elif engine == ‘mysql‘:
print(‘基于mysql的认证‘)
elif engine == ‘idap‘:
print(‘基于idap的认证‘)
else:
print(‘无法识别认证来源‘)
return wrapper
return deco
# @timmer 2层是 3层此时可以理解为:@auth(engine = ‘file‘)
#可以理解为上面这种情况
# x=auth(engine=‘file‘)
# @x
@auth(engine=‘file‘) #拿到了deco的返回值,最后调用index加(),输出结果 #deco #index=deco(index) #index=wrapper
def index():
time.sleep(1)
print(‘welcome to index page‘)
@auth(engine=‘file‘)
def home(name):
print(‘welcome %s to home page‘%name )
time.sleep(0.5)
index()
home(‘yangzhizong‘)
以上是关于python装饰器实现用户密码认证(简单初形)的主要内容,如果未能解决你的问题,请参考以下文章