user, password = 'db', '12345'
# 当装饰器也需要参入参数时我们需要给装饰器再加一层函数,
# 此时装饰器接受到的方法需要进入第二层函数进行接受,
# 第一层需要接受装饰器自己的参数
def login(login_type):
def outer_wrapper(func):
def wrapper(*agr1, **kwargs):
usernameInput = input("UserName:").strip()
passwordInput = input("Password:").strip()
if login_type == "local":
if user == usernameInput and password == passwordInput:
print("login successful")
res = func(*agr1, **kwargs) # 接受返回结果
return res
else:
print("login fail")
elif login_type == "ldap":
if user == usernameInput and password == passwordInput:
res = func(*agr1, **kwargs)
print("远程登录succes")
return res
else:
print("ldap faild")
return wrapper
return outer_wrapper
def index():
print("welcome to index page")
@login(login_type="local") # 对装饰分类
def home():
print("welcome to home page")
return "from home"
@login(login_type="ldap") # 对装饰分类
def blog():
print("welcome to blog page")
index()
# home()
blog(
)