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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具