小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统

目录
前言
今日进度
详细过程
一、数据库重构
二、编写登录接口
相关知识点
前言
昨天我们重启了小菜家教平台的开发,创建了新项目并初步进行了配置,今天我们继续。大家要是有需要源码的话可以在评论区跟我说,博客中就不添加源码了~
今日进度
完成了数据库的重构
编写项目登录接口
详细过程
一、数据库重构
数据库结构及sql语句如下:


重构完数据库后,对之间的代码要进行相应的修改
先去application.properties中修改一下数据库名

还要修改一下实体类中的数据库名

修改完后,我们启动项目进行测试
用户名输入:小菜管理员,密码输入123456

成功登录访问界面!

那到这里,我们的数据库重构并配置完成
二、编写登录接口
接下我们需要自定义登陆接口,然后让SpringSecurity对这个接口放行,让用户访问这个接口的时候不用登录也能访问。
在接口中我们通过AuthenticationManager的authenticate方法来进行用户认证,所以需要在SecurityConfig中配置把AuthenticationManager注入容器。
我们先编写一下Service层中的代码


再编写一下controller中的代码调用service中的对应方法

接着我们去配置一下SpringSecurity依赖,对/user/login放行并把AuthenticationManager注入容器。后面会对AuthenticationManager进行解释

好,现在配置得差不多了,启动项目,我们先去浏览器访问一下
显示无法访问,是的,我们现在已经自定义了登录接口,所以这里就没有跳出来登录界面,因此我们要去Apifox或者Postman中进行测试

我们在Apifox中输入对应信息
这里显示404,同时在IDEA中有报错信息


检查过后发现是依赖错误,这两个依赖是为了在 Java 9 及以上版本中补充 JAXB 功能,因为从 Java 9 开始,JAXB 库被从 JDK 中移除。这两个依赖的作用是:
jaxb-api:提供了接口和规范。
jaxb-runtime:提供了这些接口的实际实现,使得程序能够真正地执行 XML 和 Java 对象之间的转换。
那我们添加一下依赖继续运行

然后还是报错,原因是controller中路径写错了,这里忘记截图就不演示了
当时居然写成了这样哈哈哈,还是自己动手写太少了,犯小错误
@RestController是说明这个类是controller类加入容器,并且返回值是json类型
@RequestMapping中才是指定路径的地方

改完bug后我们继续进行测试
成功!

同时Redis中也出现对应数据

今天的编码任务到此结束,接下来讲总结一下相关知识
相关知识点
在我们进行登录的时候有这两行代码

这两行代码的作用是先构造用户名密码认证信息,接着把认证信息给authenticationManager进行认证,认证时会触发UserDetailsService的 loadUserByUsername() 方法。而我们之前已经编写过UserDetailsServiceImpl并重写了 loadUserByUsername() 方法,通过这个方法从数据库中查询数据并返回进行验证,认证过程中密码有加密,还会通过配置的 PasswordEncoder 比对密码是否匹配,认证成功后生成认证信息 Authentication。
相关文章:
小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统
目录 前言 今日进度 详细过程 一、数据库重构 二、编写登录接口 相关知识点 前言 昨天我们重启了小菜家教平台的开发,创建了新项目并初步进行了配置,今天我们继续。大家要是有需要源码的话可以在评论区跟我说,博客中就不添加源码了~ 今…...
Android AndroidManifest 文件内标签及属性
以下是重新排版后的文章: AndroidManifest 1. <manifest> 它是AndroidManifest.xml文件的根标签,包含了整个应用程序的基本信息,如应用程序的包名、版本代码、版本名称等。所有其他标签几乎都是在manifest标签内部定义的。 示例&…...
修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)
文章目录 引言I 解决方案案例II 知识扩展排序规则SQL SERVER支持的所有排序规则引言 新增sql server 数据库实例的默认排序规则不支持中文存储,导致乱码 解决方案: 修改排序规则为Chinese_PRC_CI_AS 或者 Chinese_PRC_Stroke_CI_AS_WS或者Chinese_PRC_CI_AI_KS_WS 仅对新增…...
【ChatGPT】让ChatGPT在回答中附带参考文献与来源
让ChatGPT在回答中附带参考文献与来源 在撰写内容时,引用参考文献和来源可以增强信息的可信度和权威性。通过引导ChatGPT生成带有参考文献的回答,用户能够获取更可靠的信息和背景资料。本文将探讨如何有效地引导ChatGPT在回答中附带参考文献与来源。 一…...
云计算 在esxi 如何创建磁盘存储
重启启动...
大屏可视化:舞动数据与美观的“设计秘籍”
大屏可视化鉴赏:踏入软件系统产品设计之旅,让我们一同鉴赏那些闪耀在智慧农业、智慧园区、智慧社区及智慧港口等领域的大屏可视化杰作。每一帧画面,都是科技与创新的完美融合,数据跃然屏上,智慧触手可及。 >> 数…...
w~视觉~3D~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12316553 #SAFDNet 3D点云物体检测对自动驾驶感知至关重要,如何高效地从稀疏点云数据中学习特征表示是3D点云物体检测面临的一个关键挑战。我们在本文中将会介绍团队发表在NeurIPS 2023的HEDNet和CVPR 2024的SAFD…...
android 怎么查看依赖包的大小
Android 项目依赖包大小查看方案 在 Android 项目开发过程中,依赖包管理是一个非常重要的环节。了解每个依赖包的大小有助于我们优化应用性能,减少应用安装包的大小。本文将介绍一种方法来查看 Android 项目中各个依赖包的大小。 1. 环境准备 在开始之…...
HyperLogLog 的原理 详解
HyperLogLog(简称 HLL)是一种用于近似计数(特别是基数估计,Cardinality Estimation)的算法,它能够在大数据场景中高效地估计集合中不同元素的数量,尤其适用于数据流的情况。HyperLogLog 相较于传…...
OCR、语音识别与信息抽取:免费开源的AI平台在医疗领域的创新应用
一、系统概述 在医疗行业中,大量数据来自手写病历、医学影像报告、患者对话记录等非结构化数据源。这些数据常常存在信息碎片化和管理困难的问题,给医务人员的工作带来了不便。思通数科AI多模态能力平台正是为了解决这一行业痛点而生,产品集…...
苍穹外卖Bug集合
初始化后端项目运行出现以下问题 以上报错是因为maven和jdk版本不符合,需要将jdk改成17,mavne改成3.9.9...
小菜家教平台(一):基于SpringBoot+Vue打造一站式学习管理系统
前言 现在已经学习了很多与Java相关的知识,但是迟迟没有进行一个完整的实践(之前这个项目开发到一半,很多东西没学搁置了,同时原先的项目中也有很多的问题),所以现在准备从零开始做一个基于SpringBootVue的…...
PyCharm中pylint安装与使用
目录 1. 安装插件2. pycharm中使用该功能3. 命令行使用 1. 安装插件 然后重启 2. pycharm中使用该功能 3. 命令行使用 前提是先 pip install pylint pylint demo01.py下面红框内容的意思是,得到10分/ 满分10分,上次运行获得8.33分,经调整…...
一篇文章了解TCP/IP模型
TCP/IP模型,即传输控制协议/互联网协议模型(Transmission Control Protocol/Internet Protocol Model),是互联网及许多其他网络上使用的分层通信模型。以下是对TCP/IP模型的详细介绍: 一、定义与组成TCP/IP模型是一个四…...
python文字识别---基于百度api
百度智能云账户注册:https://console.bce.baidu.com/ai/#/ai/ocr/app/list 获取appid、api_key、secret_key from aip import AipOcr import osconfig {appid: 116122887,api_key: DAQnt...,secret_key: 5S0Kpyh.... }# 初始化 AipOcr 客户端 client AipOcr(c…...
linux下linuxdeployqt打包过程
一 、linuxdeployqt下载安装 1.下载linuxdeployqt依赖拷贝工具 下载地址:https://github.com/probonopd/linuxdeployqt/releases 2.为了方便使用,将名字改短一点:mv linuxdeployqt-6-x86_64.AppImage linuxdeployqt3.修改下载的文件的可执行…...
【拥抱AI】AI大模型在软件开发中的应用如何保证数据安全?
随着AI大模型在软件开发中的广泛应用,数据安全问题变得尤为重要。确保数据的安全不仅关乎企业的声誉和合规性,还直接影响到用户对产品的信任。以下是几种常见的方法和最佳实践,以确保在使用AI大模型时的数据安全。 1. 数据加密 传输加密&a…...
python爬取旅游攻略(1)
参考网址: https://blog.csdn.net/m0_61981943/article/details/131262987 导入相关库,用get请求方式请求网页方式: import requests import parsel import csv import time import random url fhttps://travel.qunar.com/travelbook/list.…...
C++网络编程之IO多路复用(一)
概述 在C网络编程中,处理并发连接是一个非常关键的核心问题。为了有效管理来自多个客户端的请求,服务器需要能够同时监听多个套接字上的事件,这通常通过IO多路复用来实现。 IO多路复用是一种工作机制,它可以让程序监视多个文件描述…...
vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别
vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别 windows默认使用的是最新的visual studio,而linux默认就是cmake 文章目录 vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
