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

2021-05-11 17:28

阅读:351

标签:一个   col   inpu   注册   int   while   war   ict   python   

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


def login():
    # print(‘请完成登陆功能‘)
    count = 1
    while count :
        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(]\n,
                                                                                                  ‘‘) == 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}]\n)


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之登陆验证(装饰器的应用)

标签:一个   col   inpu   注册   int   while   war   ict   python   

原文地址:https://www.cnblogs.com/sandar6/p/13149903.html


评论


亲,登录后才可以留言!