python之登陆验证(装饰器的应用)

Posted sandar6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之登陆验证(装饰器的应用)相关的知识,希望对你有一定的参考价值。

# -*- coding:utf-8 -*-


def login():
    # print(‘请完成登陆功能‘)
    count = 1
    while count < 4:
        username = input(输入登陆用户名>>:).strip()
        password = input(输入登陆密码>>:).strip()
        with open(register, encoding=utf-8, mode=r) as f:
            for line in f:
                if line.split(&)[0].replace([, ‘‘) == username and line.split(&)[1].replace(]
,
                                                                                                  ‘‘) == password:
                    print(验证成功,正在登陆...)
                    # 登陆成功返回的状态码
                    return 100
            else:
                print(f用户名或密码错误,请重新输入,剩余{3 - count}次机会)

        count += 1


status_dict = {
    username: None,
    status: False,
}


def register():
    # print(‘请完成注册功能‘)
    username = input(输入注册的用户名>>:).strip()
    password = input(输入注册的密码>>:).strip()
    with open(register, encoding=utf-8, mode=a) as f:
        f.write(f[{username}&{password}]
)


def auth(func):
    ‘‘‘
    装饰器完成的功能是,访问被装饰函数之前,写一个三次验证登陆的功能
    登陆成功,让其访问被装饰函数的内容,登陆不成功不让访问
    :param func:
    :return:
    ‘‘‘

    def wrapper(*args, **kwargs):
        # 如果用户显示的是登陆状态,后续页面直接登陆,无需验证
        if status_dict[status]:
            res = func(*args, **kwargs)
            return res
        # 如果用户处于未登陆状态,提示登陆,获取登陆状态码,如果是100,修改用户登陆状态
        else:
            status_code = login()
            if status_code == 100:
                status_dict[status] = True
                res = func(*args, **kwargs)
                return res

    return wrapper


@auth
def article():
    print(欢迎访问文章页面)


@auth
def comment():
    print(欢迎访问评论页面)


@auth
def dariy():
    print(欢迎访问日志页面)


def main():
    article()
    comment()
    dariy()


if __name__ == __main__:
    main()

 

以上是关于python之登陆验证(装饰器的应用)的主要内容,如果未能解决你的问题,请参考以下文章

python之装饰器

python之装饰器

python之装饰器

python之循序渐进学习装饰器

测开之函数进阶篇・第七篇《装饰器》

python装饰器