yangzhizong
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\')

分类:

技术点:

相关文章:

  • 2021-10-04
  • 2022-12-23
  • 2021-09-04
  • 2022-12-23
  • 2022-01-19
  • 2021-05-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-03-09
  • 2021-06-01
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案