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

news/2025/10/7 18:43:36/文章来源:https://www.cnblogs.com/wzzkaifa/p/19128746

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

一、学生写作画像

在之前的学生写作画像板块,主要是采用了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.mzph.cn/news/930725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#造个轮子--GIF录制工具

在以往几篇文章里面,大家都可以看到各种录制的GIF效果图,把gif放在文章开始,不仅可以减少很多冗余的解释白话文,更可以让读者一览无余看到文章大概要义。 以往都是使用“LicEcap”来录制的,那么我们是否能自己实现…

android binder(二)应用层编程实例 - 指南

android binder(二)应用层编程实例 - 指南2025-10-07 18:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

做网站 需要什么样的服务器西安房产网最新楼盘

本文整理自曹操出行实时计算负责人林震基于 HologresFlink 的曹操出行实时数仓建设的分享,内容主要分为以下六部分: 曹操出行业务背景介绍曹操出行业务痛点分析HologresFlink 构建企业级实时数仓曹操出行实时数仓实践曹操出行业务成果分析未来展望 一、曹…

高校学校网站建设广州番禺区属于什么风险地区

分词 分词是最基本的第一步。无论对于英文文本,还是中文文本都离不开分词。英文的分词相对比较简单,因为一般的英文写法里通过空格来隔开不同单词的。但对于中文,我们不得不采用一些算法去做分词。 常用的分词工具 # encodingutf-8 import …

网站建设完工报告那些网站建设的好

1.什么是设计模式 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 …

netdata

https://blog.gitiu.com/posts/19026/ 默认用的db engine 并不是做持久化的, 持久化用外部的DB https://learn.netdata.cloud/docs/netdata-agent/resource-utilization/disk-&-retention

秦皇岛手机网站制作费用优化是什么

Mirrored String II 看到题解说是马拉车算法,我赛时并没想到(好吧其实我是比赛完才知道有马拉车这个算法) 因为字符串的长度只有1000,直接暴力跑其实就可以了,但是要注意的是;回文串有俩种形式&#xff0c…

arc3.2语言sort的时候报错:(sort < `(2 9 3 7 5 1)) 得写成此种:(sort > (pair (list 3 2)))

arc3.2语言sort的时候报错:(sort < `(2 9 3 7 5 1)) 得写成此种:(sort > (pair (list 3 2)))pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

关于Elment-plus的el-table组件无法通过原生JS监听scroll事件

Element-ui的el-table组件能够通过原生JS监听scroll事件 Elment-plus的el-table组件无法通过原生JS监听scroll事件,貌似是由于虚拟滚动的原因?! 今天想给el-table进行无限滚动的时候才发现...

什么是网站可信认证网站内容不收录

C# WPF入门学习主线篇(十八)—— Border布局容器 欢迎来到C# WPF入门学习系列的第十八篇。在前几篇文章中,我们已经探讨了 Canvas、StackPanel、WrapPanel、DockPanel、Grid 和 UniformGrid 布局容器及其使用方法。本篇博客将介绍另一种非常…

噬菌体展示技术:从诺奖成果到疫苗研发,这一 “表型 - 基因型统一” 工具如何颠覆生物研究?

1985 年,George P. Smith 首次将外源基因插入丝状噬菌体 f1 的基因 Ⅲ,让目的多肽 “展示” 在噬菌体表面 —— 这一创举诞生了噬菌体展示技术,三十多年后,该技术因在抗体筛选、表位鉴定领域的突破性贡献,助力 Sm…

从零开始学Flink:实时流处理实战

本文以Apache Flink实时流处理为核心,通过SocketWordCount示例,系统讲解实时流处理基础概念、Flink优势、代码实现与并行处理机制,助力读者掌握Flink流处理实战技能。在大数据处理领域,实时流处理正变得越来越重要…

实用指南:解决 xmlsec.InternalError: (-1, ‘lxml xmlsec libxml2 library version mismatch‘)

实用指南:解决 xmlsec.InternalError: (-1, ‘lxml & xmlsec libxml2 library version mismatch‘)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

高质量同人动画整理回顾记录的方式

爽了,每次清空网页、收藏夹释放大脑的时候都会感觉莫名的轻松,以前从来没有过这样的记录,用了几年才学来的经验啊;;; 超高质量原创动画制作,高质量同人动画太好看了,令人激动,某种内心被充盈了的感觉,只能体…

什么响应式网站莱芜新闻民生广角

一、问题描述 1、组态王【运行配置】界面没有【服务配置】的选项,无法将组态王Kingview配置为OPCUA服务器; 2、点击组态王【运行配置界面】的【服务配置】选项弹窗警告提示【试图执行的操作不受支持】,如下图所示: 二、问题分析 …

斑马打印机基础知识

斑马标签打印机分为热转印和热敏两种,其中,热转印需要碳带,热敏不需要。 热转印打印原理 打印头加热碳带上的油墨,将油墨熔化并转印到标签纸上。 热敏打印原理 打印头直接加热热敏纸,热量使涂层显现颜色成像。 热…

网站主要应用小程序开发工具代理平台

前言 2024.3.26是我在CSDN成为创作者的第128天,也是我第一次真正在网上创作的第128天 当我还在日常创作时,突然发现我收到了一封信 我想我可以分享一下这段时间的感想以及收获 机缘 在CSDN的这段时间里,我学习到了很多知识,也…

四川互联网广告人海淀区seo多少钱

System.out.print("今天开始继续读书摘录"); //不知道官方让不让我在博客里面记录 //如果不让的话我可能得转到别的上面记录 System.out.print("现在开始看《此生未完成》"); System.out.println("今天是第三天!");有时候常常会想到那…

班级网站素材下载扬州哪家公司做网站比较好

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 火山引擎数智平台VeDI旗下的A/B测试平台(DataTester),旨在为企业提供科学且可信的A/B测试能力及丰富的场景实验支持。随着企业的…