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之登陆验证(装饰器的应用)的主要内容,如果未能解决你的问题,请参考以下文章