装饰器添加模拟用户登陆页面(终极版)

基础的只支持在本地验证

###这是终极版本,基础版本需要输入两次验证,现在这个可以说是只验证一次把
##第五步是判断了
user,password = "caicai","13421731046"

def auth(auth_type):#在这之前的参数只能掉来第二层了func
    def ouder_wrapper(func):
        def wrapper(*args, **kwargs):
            if auth_type == "local":
                userInput = input("user:").strip()
                passwordInput = input("password:").strip()
                if userInput == user and passwordInput == password:
                    print("\033[32;1m Welcome to \033[0m")
                    ##用户登陆完成后应该要执行它之前的功能了
                    res = func(*args, **kwargs)
                    return res
                else:
                    exit("\033[31;1m login failure \033[0m")
            elif auth_type == "lapl":
                print("ww")
                print()
        return wrapper
    return ouder_wrapper


def index():
    print("welcome to index page")
###auth_type = "local"这个参数是直接传到第一次函数嵌套
@auth(auth_type = "local")##我现在要做只要登陆一次就行的(1)

def home():
    print("welcome to home page")
##又传进去一个参数,怎么搞定,嘻嘻,多加一层函数嵌套咯ouder_wrapper
@auth(auth_type = "lapl")##需要验证的加上,这里传的参数是用在判断上
def bbs():
    print("welcome to bbs page")


##调用
index()
home()
bbs()

 

posted @ 2018-04-24 17:56  Caionk  阅读(217)  评论(0编辑  收藏  举报