# -*- 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(‘]\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()