pyhon用户登录验证
登录接口
user = {'user': None}
def login_execute():
while True:
print("欢迎使用登录功能".center(50, '*'))
username = input('请输入用户名(Q/q退出):').strip()
if username.upper() == 'Q':
break
password = input('请输入密码(Q/q退出):').strip()
if password.upper() == 'Q':
break
res = login.login(username, password)
if res == '登录成功':
user['user'] = username
print(f'用户{username}登录成功!')
break
else:
print('用户名或密码错误,请重新输入')
登录装饰器
# 用户登录认证装饰器
def auth():
'''
:return:
'''
from src import login
# 登录认证装饰器
def login_auth(func):
def inner(*args, **kwargs):
if login.user['user']:
res = func(*args, **kwargs)
return res
else:
print('请登录后才可以操作')
login.execute()
return inner
return login_auth
使用方法
from common import auth
@auth.auth()
def execute():
while True:
print("欢迎使用发布博客功能".center(50,'*'))
username = input('请输入文章标题(Q/q退出):').strip()
if username.upper() == 'Q':
break
password = input('请输入文章内容(Q/q退出):').strip()
if password.upper() == 'Q':
break
多用户登录装饰器
# 多用户登录认证装饰器
def auth(role):
'''
:param role: 角色 ---》 管理员、学生、老师
:return:
'''
from core import admin, student, teacher
# 登录认证装饰器
def login_auth(func):
def inner(*args, **kwargs):
if role == 'admin':
if admin.admin_info['user']:
res = func(*args, **kwargs)
return res
else:
admin.login()
elif role == 'student':
if student.student_info['user']:
res = func(*args, **kwargs)
return res
else:
student.login()
elif role == 'teacher':
if teacher.teacher_info['user']:
res = func(*args, **kwargs)
return res
else:
teacher.login()
else:
print('当前视图没有权限')
return inner
return login_auth
使用方法
# 学生选择学校
@common.auth('student')
def choice_school():
while True:
# 1、获取所有学校,让学生选择
flag, school_list = common_interface.get_all_school_interface()
if not flag:
print(school_list)
break
for index, school_name in enumerate(school_list):
print(f'编号: {index} 学校名: {school_name}')
# 2、让学生输入学校编号
choice = input('请输入选择的学校编号: ').strip()
if not choice.isdigit():
print('输入有误')
continue
choice = int(choice)
if choice not in range(len(school_list)):
print('输入编号有误!')
continue
school_name = school_list[choice]
# 3、开始调用学生选择学校接口
flag, msg = student_interface.add_school_interface(
school_name, student_info.get('user'))
if flag:
print(msg)
break
else:
print(msg)
break