当前位置: 首页 > news >正文

深入解析:(八)登录认证与学生写作画像

本次将赵昱琨同学之前完成的学生写作画像与智能学习路径规划的后端与目前已有的后端框架进行整合。同时为了实现学生写作画像与智能学习路径规划,需要在之前简易的登录系统上进行重构,所以本次大规模重写了登录模块,同时发现很多过去冗余的代码,也一并进行了删除。

一、学生写作画像

在之前的学生写作画像板块,主要是采用了test_profie文件进行自动化测试。其中为了测试方便并未直接使用DeepSeek API,而是采用通过自己写prompt文件来进行测试填写,本次与当前后端框架合并后,已可以使用DeepSeek API进行测试。

logger.info(f"API 响应状态码: {response.status_code}")
logger.info(f"API 响应内容: {response.text[:500]}...")
result = response.json()# 解析API返回的JSON
content = result['choices'][0]['message']['content']
cleaned_api_response = remove_think_block(content)
logger.info(f" 返回结果: {cleaned_api_response}")
print("类型是:",type(cleaned_api_response))
print("内容是:",repr(cleaned_api_response))return json.loads(cleaned_api_response)

可以看到当前要求的是返回json格式,在运行中,曾出现多次json.loads无法正常使用,最后发现虽然已经要求并且规定DeepSeek API返回纯净的json格式,但其仍会返回带有markdown特征的返回格式,这些与think内容一样都可以通过正则匹配来进行清除。清楚后成功调用/update-profile,完成了内容的更新。

本次测试还将作文例子进行了外封包装,将作文例子包装在essay_sample中,便于修改,同时简化主体的代码。

可以看到数据库已经进行了更新,在6个维度进行了点评,并且为6个维度进行了评分,同时还统计了错误类型与次数,这些都可以作为日后在可视化输出时的数据。

二、登录认证

现在采用LoginManager进行管理登录。

from extensions import LoginManagerlogin_manager = LoginManager()
login_manager.init_app(app) # 绑定到主应用
login_manager.login_view = 'auth.login' # 设置登录路由@login_manager.user_loader
def load_user(user_id):
print(f"尝试加载用户 ID: {user_id}")
cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
cursor.execute('SELECT * FROM accounts WHERE id = %s', (user_id,))
user = cursor.fetchone()
cursor.close()
if user:
from auth_routes import User # 避免循环导入
return User(user)
return None

通过@login_required进行管理,这样便可以获取currentuserid,便于后续调用各种数据,同时还有登陆状态验证。

from flask import Blueprint, request, jsonify
from flask_login import UserMixin, login_user, logout_user, current_user
import MySQLdb.cursorsauth_bp = Blueprint('auth', __name__)class User(UserMixin):
def __init__(self, user_data):
self.id = user_data['id']
self.username = user_data['username']@auth_bp.route('/login', methods=['POST'])
def login():
data = request.get_json()
if not data:
return jsonify({'status': 'error',
'message': '缺少请求数据'}), 400username = data.get('username')
password = data.get('password')if not username or not password:
return jsonify({'status': 'error',
'message': '用户名和密码不能为空'}), 400try:
from app_test_new import user_model # 避免循环导入
account = user_model.get_user_by_credentials(username, password)if account:
user = User(account)
login_user(user) # 使用Flask-Login的login_user
print(f"用户 {user.id} 登录成功")
return jsonify({
'status': 'success',
'message': '登录成功',
'user': {
'id': user.id,
'username': user.username,
}
})
return jsonify({'status': 'error','message': '用户名/密码错误'}), 401

同时auth_routes也进行了更改,确保使用login_user来进行加载用户。

但目前存在无法正确识别登录的问题,虽然已经成功登录,但貌似因为仍鉴别为未登录导致load_user方法无法加载,目前正在定位问题并进行修改。

http://www.jsqmd.com/news/9715/

相关文章:

  • android binder(二)应用层编程实例 - 指南
  • netdata
  • 噬菌体展示技术:从诺奖成果到疫苗研发,这一 “表型 - 基因型统一” 工具如何颠覆生物研究?
  • 从零开始学Flink:实时流处理实战
  • 实用指南:解决 xmlsec.InternalError: (-1, ‘lxml xmlsec libxml2 library version mismatch‘)
  • 高质量同人动画整理回顾记录的方式
  • 斑马打印机基础知识
  • 详细介绍:3.1 HarmonyOS NEXT分布式数据管理实战:跨设备同步、端云协同与安全保护
  • 加拿大加密货币牌照:合规化加速数字资产成功
  • 深入解析:实时通信RTC与传统直播的异同
  • Exp2-后门原理与实践
  • 【Hexo】4.Hexo 博客文章进行加密 - 实践
  • 思考的动力
  • DirectX-Graphics-Samples
  • 星闪开发之Server-Client 指令交互控制OLED灯案例 - 教程
  • LRC and VIP - 教程
  • Software Foundations Vol.I : 多态与高阶函数(Poly)
  • 数学之美感悟。
  • 基于DeploySharp 的深度学习模型部署测试平台:支持YOLO全系列模型
  • 复制别人的vmware虚拟机无法联网ubuntu2204
  • Baklib内容中台AI重构智能服务 - 实践
  • 计算机网络学习分享-0
  • 预科02git使用
  • 预科01Python学习
  • 5G-A:开启通信与行业变革的新时代 - 指南
  • WPF Prism.Wpf Prism.DryIOC integrate modules into MainWindow, invoke other project as dll
  • 实用指南:用PyTorch从零开始编写DeepSeek-V2
  • 十所高校角逐对话式AI任务机器人挑战赛
  • SCIM漏洞挖掘实战指南
  • 虚拟文件系统