后端开发:SpringBoot实现注册与登录功能

news/2024/7/5 6:10:14

这次实现的注册与登录功能需要进行数据库的基本操作,而且是前后端分离式开发。总的来说就是首先进行数据库的设计,然后根据数据库进行编写服务端API接口,接着来到客户端移动端,进行登录与注册的界面设计,接收服务端提供的数据并显示在界面上。本文章主要进行后端API接口设计。后面会进行前端框架数据交互设计。


一、数据库设计

根据一般登录与注册的需求,数据库的用户表结构如下:

在这里插入图片描述

二、服务端API接口设计

1、首先进行持久化映射,生成用户表的模型类

(1)、找到Persistence一栏,选中项目,鼠标右键,点击最底下一个选项。

在这里插入图片描述

(2)、选择模型类的位置,选中用户表的所有字段,点击OK。

在这里插入图片描述

(3)、找到生成的模型类Users,添加主键生成器。在注解@Id下方添加以下代码:

//指定生成器名称
@GeneratedValue(generator = "uuid2" )
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator" )

2、创建DAO层,新建接口类UsersDao。代码如下:

package edu.ynmd.cms.dao;
import edu.ynmd.cms.model.Users;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;

public interface UsersDao extends JpaRepository<Users,String> {

    @Query("select u from Users u where u.username=:username and u.pass=:pass")
    List<Users> getUsersByUsernameAndPass(@Param("username")String username, @Param("pass") String pass);
    
}

3、编写server

(1)、ManageService里面进行增删查改方法的定义。

    //用户表
    Users saveUser(Users users);
    boolean deleteUser(String id);
    Users getUser(String id);
    Users getUserByUserNameAndPass(String username,String pass);

(2)、MangeServiceImpl里面进行具体方法的实现。

//*****************************用户表增删查改开始*********************************
    @Override
    public Users saveUser(Users users) {
        try {
            return usersDao.save(users);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public boolean deleteUser(String id) {
        try {
            usersDao.deleteById(id);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }

    @Override
    public Users getUser(String id) {
        Optional<Users> temp=usersDao.findById(id);
        return temp.isPresent()?temp.get():null;
    }

    @Override
    public Users getUserByUserNameAndPass(String username, String pass) {
        List<Users> ul=usersDao.getUsersByUsernameAndPass(username,pass);
        if(ul.size()>0){
            return ul.get(0);
        }
        return null;
    }

4、来到PublicAction,编写API接口

//用户登录方法
    @PostMapping("/login")
    @ResponseBody
    public HashMap<String,String> login(
            @RequestBody Account account) throws IOException {
        Users u=manageService.getUserByUserNameAndPass(account.username,account.password); //获取用户表的用户名和密码
        if(u!=null){
            String jwt= JwtUtil.generateToken(u.getRoleid(),u.getUsersid());  //获取用户角色和用户ID

            return new HashMap<String,String>(){{
                put("msg","ok");
                put("token",jwt);
                put("role",u.getRoleid());
                // put("role","admin");
            }};
        }
        else {
            return new HashMap<String,String>(){{
                put("msg","error");
                put("token","error");
            }};
        }
    }

    public static class Account{
        public String username;
        public String password;
    }

    //用户注册
    @PostMapping("saveUser")
    @ResponseBody
    public HashMap saveUser(@RequestBody Users users) throws Exception{
        HashMap m=new HashMap();

        try {
            users.setRoleid("member");

            manageService.saveUser(users);
            m.put("msg","ok");
        } catch (Exception e) {
            e.printStackTrace();

            m.put("msg","error");
        }


        return m;
    }

最后,启动项目进行测试。

三、使用postman进行注册与登录测试

1、postman注册测试

image

2、查看数据库内容,可以看到刚刚已经注册成功

在这里插入图片描述

3、postman登录测试

在这里插入图片描述

4、输入一个错误密码,测试能不能登录

在这里插入图片描述

到此,服务端API接口已经实现,后面会写关于客户端和移动端与API接口进行数据交互的文章,敬请期待!

http://www.niftyadmin.cn/n/3649596.html

相关文章

[sync4j]Nokia手机和sync4j服务器同步的第四次手机登录,手工新建了syncSource同步源

[sync4j]Nokia手机和sync4j服务器同步的第四次手机登录&#xff1a;在sync4j社区看到一个话题&#xff0c;讨论如何纠正Nokia系列手机会自动在远程数据库前面添加一个“./”符号。据Harrie说&#xff0c;“You can work around this by configure a similar syncsourceas the o…

debian tomcat_如何在Debian 10上安装Apache Tomcat 9

debian tomcat介绍 (Introduction) Apache Tomcat is a web server and servlet container that is used to serve Java applications. Tomcat is an open source implementation of the Java Servlet and JavaServer Pages technologies, released by the Apache Software Fou…

移动开发:Ionic框架实现注册与登录功能

由于项目是前后端分离式开发&#xff0c;所以移动端使用ionic框架&#xff0c;后端API接口使用SpringBoot框架。注册与登录的后端实现可以参考我的这篇文章&#xff1a;后端开发&#xff1a;SpringBoot实现注册与登录功能。ionic框架实现注册与登录其实就是调用后端API接口对数…

Android根据分辨率进行单位转换-(dp,sp转像素px) - topMan'blog - ITeye技术网站

【转】Android根据分辨率进行单位转换-(dp,sp转像素px) 博客分类&#xff1a; Android 开发学习 Android系统中&#xff0c;默认的单位是像素(px)。也就是说&#xff0c;在没有明确说明的情况下&#xff0c;所有的大小设置都是以像素为单位。 如果以像素设置大小&#xff0c;会…

[sync4j]Nokia手机和sync4j服务器同步的第三次尝试

第三次手机登录&#xff1a;按照前面所说的&#xff0c;设置手机上面的“远程数据库”为“./contact”&#xff0c;然后做手机同步。结果&#xff0c;经过漫长的初始化时间&#xff0c;手机上报告错误“连接错误同步类型不被支持无法和服务器同步”在服务器日志中&#xff0c;我…

Ionic6使用组件出现错误:Did you add it to @NgModule.entryComponents

缘由 在Ionic6和Angular8项目中使用组件时出现错误:Error: No component factory found for LoginComponent. Did you add it to NgModule.entryComponents? 在我的上一篇文章&#xff1a;移动开发&#xff1a;Ionic框架实现注册与登录功能中&#xff0c;实现软件运行时弹出登…

new一个Object对象占用多少内存?

Java的自动内存管理机制省却了很多编码工作&#xff0c;大大地提高了Java的生产力&#xff0c;而且JVM的性能也越来越好&#xff0c;特别是G1的出现&#xff0c;改善了垃圾回收中stop the world的状况。 也许很多人都没有考虑过这个问题&#xff0c;new一个Object对象到底占用多…

[Domino]“java.lang.ClassCastException:lotus.domino.cso.Item”异常解决办法

[Domino] “java.lang.ClassCastException&#xff1a;lotus.domino.cso.Item”异常解决办法编写者日期关键词郑昀ultrapower2005-6Java Domino RichTextItem通过Domino的Document.getFirstItem("Body")是可以获取当前邮件的Body字段&#xff0c;并试图直接转换为Ric…