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

女爷i 2022-11-05 15:56 373阅读 0赞

一、数据库设计

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

1203cd30e214a42513878ffdfe731dc1.png

二、服务端API接口设计

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

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

bf4fd995b0c0a27b97a68cf903a30d5d.png

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

4128577fadfb608d6d7d1870b38f9b37.png

(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 {

@Query(“select u from Users u where u.username=:username and u.pass=:pass”)

List 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 temp=usersDao.findById(id);

return temp.isPresent()?temp.get():null;

}

@Override

public Users getUserByUserNameAndPass(String username, String pass) {

List ul=usersDao.getUsersByUsernameAndPass(username,pass);

if(ul.size()>0){

return ul.get(0);

}

return null;

}

4、来到PublicAction,编写API接口

//用户登录方法

@PostMapping(“/login”)

@ResponseBody

public HashMap 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(){ {

put(“msg”,”ok”);

put(“token”,jwt);

put(“role”,u.getRoleid());

// put(“role”,”admin”);

}};

}

else {

return new HashMap(){ {

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注册测试

93b332452c6f0cca3e49272ac9a4bbf9.png

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

1d359116218391cd4918498070438713.png

3、postman登录测试

980abfd7275e55a3deba57043aad203b.png

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

f56a7a21bcdb64705e2fd91544dd354d.png

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

发表评论

表情:
评论列表 (有 0 条评论,373人围观)

还没有评论,来说两句吧...

相关阅读

    相关 实现登录注册

     登录原理:                 如果persons中含有对应的用户名和密码则提示登录成功, 否则提示用户名和密码错误                 1. 用