小菜家教平台(二):基于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。

相关推荐
wangjialelele9 分钟前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
历程里程碑10 分钟前
普通数组----轮转数组
java·数据结构·c++·算法·spring·leetcode·eclipse
callJJ15 分钟前
Spring AI ImageModel 完全指南:用 OpenAI DALL-E 生成图像
大数据·人工智能·spring·openai·springai·图像模型
晔子yy20 分钟前
如何设计让你的程序同时处理10w条数据
java
Yvonne爱编码26 分钟前
链表高频 6 题精讲 | 从入门到熟练掌握链表操作
java·数据结构·链表
lpfasd12330 分钟前
物联网后端岗位java面试题
java·物联网·php
毕设源码李师姐32 分钟前
计算机毕设 java 基于 java 的图书馆借阅系统 智能图书馆借阅综合管理平台 基于 Java 的图书借阅与信息管理系统
java·开发语言·课程设计
忆~遂愿32 分钟前
Runtime 上下文管理:计算实例的生命周期、延迟最小化与上下文切换优化
java·大数据·开发语言·人工智能·docker
powerfulhell38 分钟前
寒假python作业5
java·前端·python
1尢晞139 分钟前
Java学习
java·开发语言