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

VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现

在现代Web应用中,用户注册是一个基础而重要的功能。本文将详细介绍如何使用Vue.js前端框架和SpringBoot后端框架实现一个完整的邮箱注册功能,包含验证码发送、表单验证等关键环节。

一、功能概述

这个注册系统主要包含以下功能点:

  1. 用户填写邮箱、验证码和密码进行注册

  2. 邮箱验证码发送与验证

  3. 表单前端验证

  4. 密码加密存储

  5. 默认用户信息设置

二、前端实现

1. Vue组件结构

前端使用Vue.js框架,结合Element UI组件库实现了一个简洁的注册表单:

<template><div class="Register-container"><div class="allClass"><div class="titleClass"><b>没有账号请邮箱注册</b></div><el-form :rules="ruleList" :model="user" ref="userForm"><!-- 邮箱输入 --><el-form-item prop="name"><el-input placeholder="请输入您的邮箱" v-model="user.name" prefix-icon="el-icon-message"></el-input></el-form-item><!-- 验证码输入 --><el-form-item prop="code"><el-input placeholder="邮箱收到的验证码" v-model="user.code" prefix-icon="el-icon-lock"></el-input><el-button type="primary" @click="getEmailCode">获取验证码</el-button></el-form-item><!-- 密码输入 --><el-form-item prop="password"><el-input placeholder="请设置密码" v-model="user.password" show-password></el-input></el-form-item><!-- 操作按钮 --><div class="buttonClass"><el-button type="primary" @click="registerClick">注册用户</el-button><el-button type="warning" @click="$router.push('/login')">返回登录</el-button></div></el-form></div></div>
</template>

2. 表单验证

使用Element UI的Form组件内置验证功能:

ruleList: {name: [{required: true, message: '请输入您的邮箱账号', trigger: 'blur'},{min: 3, max: 60, message: '长度在3-60个字符', trigger: 'blur'}],password: [{required: true, message: '请设置密码', trigger: 'blur'},{min: 3, max: 60, message: '长度在3-60个字符', trigger: 'blur'}],code: [{required: true, message: '请输入收到的验证码', trigger: 'blur'},{min: 3, max: 20, message: '长度在3-20个字符', trigger: 'blur'}]
}

3. 核心方法

获取验证码方法

getEmailCode() {if (!this.user.name) {this.$message.warning("请输入邮箱账号")return}// 邮箱格式验证if (!/^\w+((.\w+)|(-\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/.test(this.user.name)) {this.$message.warning("请输入正确的邮箱账号")return}// 发送请求this.$http.post("/big/email_code", this.user).then(res => {if (res.data.code === "200") {this.$message.success("邮箱验证码发送成功,请到对应邮箱查看")} else {this.$message.error(res.data.message)}})
}

注册方法

registerClick() {this.$refs["userForm"].validate(valid => {if (valid) { // 表单校验合法this.$http.post("/big/register", this.user).then(res => {if (res.data.code === "200") {this.$router.push("/login")this.$message.success("注册成功,请登录!")} else {this.$message.error(res.data.message)}});}})
}

4. 样式设计

使用CSS实现了渐变背景和卡片式布局:

.Register-container {height: 100vh;background-image: linear-gradient(to bottom right, deepskyblue, darkcyan);overflow: hidden;
}.allClass {margin: 200px auto;background-color: #ffffff;width: 350px;height: 400px;padding: 20px;border-radius: 10px;
}

三、后端实现

1. 注册接口

@PostMapping("/register")
public Res register(@RequestBody User user) {// 验证码校验QueryWrapper<Email> emailQueryWrapper = new QueryWrapper<>();emailQueryWrapper.eq("email", user.getName());Email existEmail = emailMapper.selectOne(emailQueryWrapper);if (existEmail != null && !existEmail.getCode().equals(user.getCode())) {if (existEmail.getCode().isEmpty()) {return Res.error(Constants.CODE_600, "验证码已经失效,请重新获取验证码");} else {return Res.error(Constants.CODE_600, "验证码验证失败,请检查验证码是否填写正确");}}// 验证码使用后清空if (existEmail != null && (existEmail.getCode() != null)) {existEmail.setCode("");emailMapper.updateById(existEmail);}// 检查用户是否已存在QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();userQueryWrapper.eq("name", user.getName());User existUser = userMapper.selectOne(userQueryWrapper);if (existUser != null) {return Res.error(Constants.CODE_600, "用户名已经存在,请更换用户名");}// 设置默认用户信息user.setNick("人工智能-热爱者");user.setRole("人工智能");user.setPassword(MyUtils.getSHA256StrJava(user.getPassword())); // 密码加密user.setBalance(String.valueOf(10)); // 默认10次调用次数user.setAvatar("https://wdfgdzx.top:3333/document/cd39af3e175b4524890c267e07298f5b.png");userMapper.insert(user);return Res.success(null);
}

2. 关键点解析

  1. 验证码验证

    • 查询数据库验证码记录

    • 比较用户输入的验证码

    • 验证后清空验证码防止重复使用

  2. 用户唯一性检查

    • 通过用户名(邮箱)查询是否已存在

  3. 安全措施

    • 密码使用SHA256加密存储

    • 验证码一次性使用

  4. 默认信息设置

    • 昵称、角色、头像、初始余额等

四、技术亮点

  1. 前后端分离架构:Vue.js前端 + SpringBoot后端,通过RESTful API交互

  2. 表单验证双重保障

    • 前端使用Element UI进行基础验证

    • 后端进行业务逻辑验证

  3. 安全性考虑

    • 密码加密存储

    • 验证码机制防止机器注册

    • 验证码一次性使用

  4. 用户体验优化

    • 清晰的错误提示

    • 表单实时验证

    • 操作反馈消息

五、总结

本文详细讲解了一个完整的邮箱注册功能的实现过程,从前端页面到后端接口,涵盖了表单验证、验证码发送与验证、密码加密等关键环节。这种实现方式具有良好的安全性和用户体验,可以广泛应用于各种Web系统中。

在实际项目中,还可以进一步优化:

  1. 添加图片验证码防止刷接口

  2. 实现验证码有效期限制

  3. 增加密码强度检测

  4. 添加注册邮件通知功能

希望本文对大家实现用户注册功能有所帮助!

http://www.lryc.cn/news/610426.html

相关文章:

  • 向量魔法:Embedding如何赋能大模型理解世界
  • Go语言select
  • Git基础玩法简单描述
  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 复合机器人抓取精度怎么测量?
  • Tableau筛选器所有值与总和的差异:同一度量,两重世界
  • 【教学类-52-17】20250803动物数独_空格尽量分散_只有一半关卡数(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套
  • 内网有人下载导致网速很慢怎么找出来?
  • Vue3核心语法进阶(生命周期)
  • MySQL InnoDB 表数据结构存储方式详解
  • 川翔云电脑:引领开启算力无边界时代
  • 数学 理论
  • 哪些企业需要私有化部署?有没有推荐的私有化im
  • 段落注入(Passage Injection):让RAG系统在噪声中保持清醒的推理能力
  • [Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本
  • 【RH124知识点问答题】第8章 监控和管理 Linux 进程
  • Linux 磁盘管理详解:分区、格式化与挂载全流程指南