Spring Boot 实战篇(四):实现用户登录与注册功能

springboot实现最基础的登录注册功能(步骤详细,逻辑清晰) springboot实现最基础的登录注册功能 阅读详情

目录

Spring Boot 实战篇(四):实现用户登录与注册功能

一、用户注册功能

(一)前端页面设计(简要提及)

(二)后端实现

二、用户登录功能

(一)前端页面设计(简要提及)

(二)后端实现


在构建 Web 应用程序时,用户登录与注册功能是常见且重要的部分。以下将详细介绍在 Spring Boot 项目中实现用户登录与注册功能的步骤,并附上相应的代码示例。

一、用户注册功能

(一)前端页面设计(简要提及)
  1. 创建注册页面

    • 使用 HTML、CSS 和 JavaScript 等前端技术创建一个用户注册页面。页面应包含输入框用于输入用户名、密码、确认密码、邮箱等信息,以及一个提交按钮。
    • 例如,在 HTML 中创建一个表单:
    注册页面



  2. 前端数据校验(可选)

    • 在前端 JavaScript 代码(如register.js)中,可以添加一些基本的数据校验逻辑,如检查用户名是否为空、密码长度是否符合要求、两次密码是否一致等。
    • 代码示例(简单的密码一致性校验):

    document.getElementById(‘registerForm’).addEventListener(‘submit’, function (e) {
    e.preventDefault();
    const password = document.getElementById(‘password’).value;
    const confirmPassword = document.getElementById(‘confirmPassword’).value;
    if (password!== confirmPassword) {
    alert(‘两次密码不一致’);
    return;
    }
    // 后续可添加更多校验和提交数据到后端的逻辑
    });

(二)后端实现
  1. 在服务层添加注册方法

    • 在UserService接口中添加registerUser方法,用于处理用户注册逻辑。
    • 代码示例:

    package com.example.myproject.service;

    import com.example.myproject.entity.User;
    import java.util.List;

    public interface UserService {
    List getAllUsers();
    User getUserById(Long id);
    boolean registerUser(User user);
    }

  2. 在服务层实现类中实现注册方法

    • 在UserServiceImpl类中实现registerUser方法,步骤如下:
      • 对用户输入的密码进行加密(使用合适的加密算法,如 BCryptPasswordEncoder)。
      • 检查用户名是否已存在(调用UserDao的方法查询数据库)。
      • 如果用户名不存在,将用户信息插入数据库(调用UserDao的insert方法)。
    • 代码示例:

    package com.example.myproject.service.impl;

    import com.example.myproject.dao.UserDao;
    import com.example.myproject.entity.User;
    import com.example.myproject.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.stereotype.Service;
    import java.util.List;

    @Service
    public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    private BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

    @Override
    public List<User> getAllUsers() {
        return userDao.findAll();
    }
    
    @Override
    public User getUserById(Long id) {
        return userDao.findById(id);
    }
    
    @Override
    public boolean registerUser(User user) {
        // 加密密码
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        // 检查用户名是否已存在
        User existingUser = userDao.findByUsername(user.getUsername());
        if (existingUser!= null) {
            return false;
        }
        // 插入用户信息
        userDao.insert(user);
        return true;
    }
    

    }

  • 这里假设UserDao中已经有findByUsername方法用于根据用户名查询用户。
  1. 在控制器中添加注册接口

    • 在UserController中添加一个处理注册请求的方法,使用@PostMapping注解标识该方法处理 HTTP POST 请求,请求路径为/register。
    • 在方法中接收前端传来的用户注册信息(通过@RequestBody注解将 JSON 数据转换为User对象),调用服务层的registerUser方法处理注册逻辑,并根据结果返回相应的响应给前端。
    • 代码示例:

    package com.example.myproject.controller;

    import com.example.myproject.entity.User;
    import com.example.myproject.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/register")
    public ResponseEntity<String> registerUser(@RequestBody User user) {
        boolean success = userService.registerUser(user);
        if (success) {
            return new ResponseEntity<>("注册成功", HttpStatus.CREATED);
        } else {
            return new ResponseEntity<>("用户名已存在", HttpStatus.BAD_REQUEST);
        }
    }
    

    }

二、用户登录功能

(一)前端页面设计(简要提及)
  1. 创建登录页面

    • 类似注册页面,使用前端技术创建一个登录页面,包含用户名和密码输入框以及登录按钮。
    • 例如:
    登录页面

  2. 前端交互逻辑(可选)

    • 在login.js中,可以添加一些交互逻辑,如点击登录按钮时发送登录请求到后端,以及处理登录成功或失败的提示信息。
(二)后端实现
  1. 在服务层添加登录方法

    • 在UserService接口中添加loginUser方法,用于处理用户登录逻辑。
    • 代码示例:

    package com.example.myproject.service;

    import com.example.myproject.entity.User;
    import java.util.List;

    public interface UserService {
    List getAllUsers();
    User getUserById(Long id);
    boolean registerUser(User user);
    boolean loginUser(String username, String password);
    }

  2. 在服务层实现类中实现登录方法

    • 在UserServiceImpl类中实现loginUser方法,步骤如下:
      • 根据用户名查询用户信息(调用UserDao的findByUsername方法)。
      • 如果用户存在,使用密码编码器验证输入的密码是否与数据库中存储的密码匹配。
      • 如果密码匹配,登录成功,可根据需求返回一些信息(如用户信息或 Token 等,这里简单返回true表示登录成功)。
    • 代码示例:

    @Override
    public boolean loginUser(String username, String password) {
    User user = userDao.findByUsername(username);
    if (user!= null) {
    return passwordEncoder.matches(password, user.getPassword());
    }
    return false;
    }

  3. 在控制器中添加登录接口

    • 在UserController中添加一个处理登录请求的方法,使用@PostMapping注解,请求路径为/login。
    • 在方法中接收前端传来的用户名和密码,调用服务层的loginUser方法进行登录验证,并根据结果返回相应的响应给前端。
    • 代码示例:

    @PostMapping(“/login”)
    public ResponseEntity loginUser(@RequestBody UserLoginRequest request) {
    boolean success = userService.loginUser(request.getUsername(), request.getPassword());
    if (success) {
    return new ResponseEntity<>(“登录成功”, HttpStatus.OK);
    } else {
    return new ResponseEntity<>(“用户名或密码错误”, HttpStatus.UNAUTHORIZED);
    }
    }

  • 这里假设UserLoginRequest是一个包含用户名和密码属性的请求类,用于接收前端登录请求的数据。

通过以上步骤,我们实现了用户登录与注册功能。在实际应用中,还可以进一步优化,如添加更多的安全措施(如防止暴力破解密码、使用 Token 进行身份验证等)、完善用户信息验证规则、处理登录状态管理等。同时,确保密码加密的安全性和数据库操作的可靠性也是非常重要的方面。

Java开发:实现用户注册登录的功能 在Java开发过程中,实现用户的注册功能是最基本的,用户通过手机号或者邮箱作为注册账号也是非常常见的操作方式,不管是通过手机号注册或者邮箱注册,原理都差不多,那么本文就来分享一下在Java开发过程中的用户注册账号的功能实现。通过上文讲述的流程步骤,就简单实现了一个比较全面的用户注册登录的功能,虽然这个功能很普遍,但是对于Java开发刚入门的新手来说还是有难度的,这个命题可以作为出入Java开发者来作为练习的知识点,以上就是本文的全部内容,如有不妥之处,还请多多提出来。 阅读详情

相关推荐

SpringBoot 用户登录系统

文章目录SpringBoot 用户登录一、MySQL数据库二、依赖二、前端模板三、后端代码运行结果 SpringBoot 用户登录 一、MySQL数据库 字段 id 字段 username 字段 password create database springboot charset=utf8; use springboot; create table user(id int primary key auto_increment,username varchar(12),password varchar(1

qq_53452284的博客 1386

SpringBoot+MyBatis用户注册实战

spring官网 通过spring官网初始化SpringBoot项目 使用idea工具打开Springboot项目,项目结构 添加pom依赖 <!--springboot启动类--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId>

Java721的博客 2万+

推荐系统(1):推荐系统评测

对于可以离线优化的指标,我个人的看法是应该在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用一个数学公式表达,离线实验的优化目标是:最大化预测准确度使得 覆盖率 > A多样性 > B新颖性 > C其中,A、B、C的取值应该视不同的应用而定。

数据不会骗人 2527

springboot实现登录功能

使用springboot连接mysql实现登录功能

qq_41601567的博客 6850

ubuntu18.04安装Nvidia显卡驱动后黑屏及网络、蓝牙驱动消失的解决方案

ubuntu18.04安装Nvidia显卡驱动后黑屏及网络、蓝牙驱动消失的解决方案

weixin_40735291的博客 6618

基于JavaFX的Http Server模拟器

源码地址 GitHub - DayRain/http-server-simulator: http server 模拟器 功能描述 HttpServer模拟器,通过简单的配置即可模拟第三方服务端,用于接收和响应HTTP请求。 支持同时模拟多个服务、动态添加接口、动态配置返回值。 使用说明 运行 exe运行 编译代码后,点击exe直接运行 代码运行 下载好代码后,运行主类ApplicationStarter即可 新建服务 主界面如下 点击 文件-新建 创建新的服务 ...

小楼夜听雨的博客 2534
上一篇: RabbitMQ之交换机
下一篇: mybatisPlus打印sql配置
普通网友
博客等级 码龄18年 0粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值