用户注册与登录Demo

一. 业务设计

  1. 注册接口

  2. 登录接口

  3. 退出登录接口

二. 数据存储

mysql+redis

三. 技术选型

Spring Boot + MyBatis +redis+ H2/MySQL + JWT(最后加入)+Vue

四. 遇到的问题

1. vue和后端springboot进行交互如何解决跨域问题?

浏览器提示:No 'Access-Control-Allow-Origin' header is present (跨域问题)

解释:前端 http://localhost:5173 去请求后端 http://localhost:8080,被浏览器的跨域策略拦截了,

所以前端拿不到真实的响应内容,即使后端已经返回了 true / 200 OK。(vue默认5173端口)

换句话说:

后端其实成功执行了,但浏览器不允许前端读取结果。

解决方式:

  1. 如果你是 Spring Boot,最简单的是在 Controller 上加 @CrossOrigin,例如:

@RestController

@RequestMapping("/api")

@CrossOrigin(origins = "http://localhost:5173") // 或 "*" 做开发测试

public class LoginController {

@PostMapping("/register")

public boolean register(@RequestParam("username") String username,

@RequestParam("password") String password) {

int n = loginService.register(username, password);

return n > 0;

}

}

  1. 第二种写一个全局配置

@Configuration

public class CorsConfig {

@Bean

public WebMvcConfigurer corsConfigurer() {

return new WebMvcConfigurer() {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**")

.allowedOrigins("http://localhost:5173")

.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")

.allowedHeaders("*")

.allowCredentials(true);

}

};

}

}

一定要重启后端,然后再在浏览器里 完全刷新(Ctrl+F5) 再试一次注册。

第三种: 前端在vite.config.js加对应的配置

export default defineConfig({

plugins: vue(), vueDevTools(),

resolve: {

alias: {

'@': fileURLToPath(new URL('./src', import.meta.url)),

},

},

server: {

proxy: {

'/api': {

target: 'http://localhost:8080',

changeOrigin: true,

},

},

},

})

然后把前端地址改成 相对路径:

这样在开发环境下,请求是从同源的 5173 发给 Vite,再由 Vite 转发到 8080,浏览器就不会认为是跨域。

2. springboot项目我引入了下面的依赖,但是在代码里面我并没有写效验以及认证,前端调用为啥也要认证?

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-validation</artifactId>

</dependency>

注意:

Spring Boot 引入 spring-boot-starter-security 后,会自动注册 SecurityFilterChain,

默认策略是所有请求都需要认证,即使没有写任何安全配置,也会启用默认用户和 Basic 认证。

spring-boot-starter-validation 呢?

不会自动开启,只有写了@NotNull @NotBlank @Valid这些注解才会开启。

五. 前端页面展示

登录:

注册:

六. 源码

源码可以运行,功能后续继续优化。

相关推荐
腻害兔44 分钟前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影1 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao121312 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
CRMEB系统商城3 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience4 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
weixin_408099675 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
钱六两5 小时前
#3、SpringAI 接入deepSeek大模型(喂饭版)
java·spring boot·ai编程
null_176 小时前
IntelliJ IDEA 极致流畅配置方案:Ultra 9 285K + 64GB 内存实测
java·ide·intellij-idea
Herbert_hwt7 小时前
建立Java程序开发
java·开发语言