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

Spring Boot 注册登录接口进阶(bcrypt密码加密 + Apifox 测试)

目录

  • 🍧一、完成“用户注册接口”(POST 请求)
    • 1. 准备阶段
    • 2. 创建结构(按层分包)
    • 3. 核心代码步骤
    • 4. 测试
  • 🍧二、完成"登录接口"+密码加密(bcrypt)
    • 1. 引入依赖
    • 2. 在注册时加入密码
    • 3. 实现登录接口
    • 4. 测试

本篇博客基于新建项目且连接好数据库。
学习内容可接我的上一篇博客,按学习顺序写的。


🔅提前看:
本部分使用 Spring Boot 实现用户注册与登录接口,通过 BCrypt 加密密码保障安全,并用 Apifox 进行接口测试。

🍧一、完成“用户注册接口”(POST 请求)

目标:能通过前端 / Postman 向后端发送注册信息,并把用户存进数据库。

1. 准备阶段

  • 新建一个 Spring Boot 项目(已经建好就跳过)。

  • 确保有:
    application.yml 或 application.properties
    数据库(MySQL)连接成功
    表结构 user(id, username, password, email)

示例 SQL:

CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL,password VARCHAR(100) NOT NULL,email VARCHAR(100)
);

2. 创建结构(按层分包)

com.example.demo┣ controller   → 接口层┣ service      → 业务逻辑层┣ mapper       → 数据库交互层(MyBatis)┗ entity       → 实体类

3. 核心代码步骤

  1. User实体类
@Data
public class User {private Integer id;private String username;private String password;private String email;
}
  1. UserMapper 接口
@Mapper
public interface UserMapper {@Insert("INSERT INTO user(username,password,email) VALUES(#{username},#{password},#{email})")int insert(User user);
}
  1. UserService
@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public void register(User user) {userMapper.insert(user);}
}
  1. UserController
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/register")public String register(@RequestBody User user) {userService.register(user);return "注册成功";}
}

4. 测试

  1. 使用apifox创建post接口(具体步骤可以问ai),接口信息如下:
    在这里插入图片描述
  2. 填写请求体
  "username": "xiaomiao","password": "123456","email": "test@qq.com"
}
  1. 发送请求+验证
    成功 返回200
    在这里插入图片描述
    数据库中数据插入成功:
    在这里插入图片描述

🍧二、完成"登录接口"+密码加密(bcrypt)

1. 引入依赖

//pom.xml<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId></dependency>

只引入其加密模块而不是整个安全框架,这个不会引入登录拦截、权限控制,只带加密功能,非常轻量。(否则会登录拦截,稍为复杂)

2. 在注册时加入密码

// UserService
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;public void register(User user) {BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();user.setPassword(encoder.encode(user.getPassword()));userMapper.insert(user);
}

3. 实现登录接口

// Mapper
@Select("SELECT * FROM user WHERE username = #{username}")
User findByUsername(String username);
// Service
public boolean login(String username, String rawPassword) {User dbUser = userMapper.findByUsername(username);if (dbUser == null) return false;BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();return encoder.matches(rawPassword, dbUser.getPassword());
}
// Controller
@PostMapping("/login")
public String login(@RequestBody User user) {boolean success = userService.login(user.getUsername(), user.getPassword());return success ? "登录成功" : "用户名或密码错误";
}

4. 测试

这里要新创建一个用户,再用这个用户登录。不能用加密模块之前的用户。
因为未加密前数据库存的明文(加密模块加入后密码校验不通过),加密后存的哈希。在这里插入图片描述

http://www.dtcms.com/a/581731.html

相关文章:

  • 重庆住房城乡建设厅官方网站自己做直播网站
  • 服装网站制作网站建设需要的条件
  • 【把Linux“聊”明白】编译器gcc/g++与调试器gdb/cgdb:从编译原理到高效调试
  • LeetCode算法日记 - Day 96: 最长回文子串
  • 汽车ECU诊断刷写和OTA升级中的验签和校验
  • 网站主题旁边的图标怎么做的套模板网站
  • x265 编码器Analysis::compressInterCU_rd0_4 函数详细分析
  • 小杰-大模型(two)——RAG与Agent设计——Langchain-prompt提示词
  • Rust 练习册 :Luhn Trait与Trait实现
  • 家庭机器人,从科幻到日常的二十年突围战
  • 网站html地图导航代码大全网站功能的介绍
  • Android开发(Kotlin) 高阶函数、内联函数
  • AI安全与网络安全的融合:从挑战到解决方案
  • 从零开始构建现代化React应用:最佳实践与性能优化
  • 国外的网站建设公司广州工商注册服务中心
  • 【tips】常用不同状态小圆点样式css
  • 保险微网站制作公司网站费用计入什么科目
  • SSM网上水果商城s7436(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 北京市建设信息网站湖南手机版建站系统信息
  • 【函数参数传递方式选择指南(C/C++)】
  • 做ppt的图片素材网站数字营销成功案例
  • 企业网站子页面模板网站 开发 外包
  • 机器学习日报14
  • 解决Mac不能识别#include <bits/stdc++.h> 头文件问题
  • 基于站点数据进行遥感机器学习参数反演-以XGBOOST反演LST为例(附带数据与代码)试读
  • 四面山网站建设现在帮别人做网站赚钱不
  • 破解EEG逆问题:ADMM-ESINet如何融合优化理论与深度学习实现实时源成像
  • CSS 高中低部分面试题方法及知识点介绍
  • GMI Cloud@AI周报 | Cursor 2.0发布自研模型Composer;小鹏发布新一代人形机器人 IRON
  • 莱芜手机网站建设报价网站建设平台策划