这次实现的注册与登录功能需要进行数据库的基本操作,而且是前后端分离式开发。总的来说就是首先进行数据库的设计,然后根据数据库进行编写服务端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 {

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

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

3、postman登录测试

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

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

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

  1. java支付宝网页授权登录界面_支付宝开发平台之第三方授权登录与获取用户信息...

    对于第三方登录,我们常见了,很多应用可以进行第三方登录,我常用的有:QQ.微信.新浪.支付宝等等,今天我们就一起来简单学习一下支付宝第三方授权登录. 打开支付宝开发平台,注册成为开发者,点击开发者中心 ...

  2. php 不同权限登录界面,PHP中如何实现不同权限进入不同页面_后端开发

    PHP中怎么进行URL转发_后端开发 PHP中进行URL转发的方法:1.使用函数"file_get_contents()"将URL传入,该函数会将URL中的网页源代码进行获取,然后 ...

  3. php类实例化js,php中如何实例化一个类_后端开发

    php实现字母数字混合验证码_后端开发 js中可以通过后缀加随机数[Math.random()]来实现刷新验证码,PHP验证传过来的参数code和当前session存储的验证码进行比较,若是正确返回1 ...

  4. php后端switch,详解PHP中php switch的方法实例_后端开发

    php+javascript实现用户注册模块(附源码)_后端开发 在任何一个网站内都需要注册功能,本文讲述了利用html . javascript . ajax . php和MySQL实现简单的注册功 ...

  5. python判断某年是否为闰年_python如何判断某年是否是闰年_后端开发

    如何基于Hyperf实现RabbitMQ+WebSocket消息推送_后端开发 基于 Hyperf+ WebSocket +RabbitMQ 实现的一个简单大屏幕的消息推送.利用 WebSocket ...

  6. php数组去掉键值,PHP 如何将数组去掉键值?_后端开发

    如何用python计算圆周率?_后端开发 python计算圆周率的方法:首先在图像中随机抛置大量的点:然后计算落在1/4圆内的点的数量:最后计算pi值,代码为[for i in range(1,DAR ...

  7. 使用php下载网络图片有哪些方法,php下载网络图片常用的三个方法总结_后端开发...

    php文件锁产生的问题和解决方案(一个真实案例)_后端开发 一个真实案例想起自己之前犯过一个相关的错误.当时场景是这样的:有一个微信公众号项目,调用微信公众号的接口都需要access_token,它的 ...

  8. c语言中 n的意义,\n\n在c语言中是什么意思?_后端开发

    PHP如何结合MySQL进行千万级数据处理_后端开发 一张一亿的订单表,可以分成五张表,这样每张表就只有两千万数据,分担了原来一张表的压力,分表需要根据某个条件进行分,这里可以根据地区来分表,需要一个 ...

  9. medoo php 教程,PHP数据库框架Medoo1.6安装教程_后端开发

    PHP如何删除一个路径下的所有文件夹和文件?_后端开发 PHP如何删除一个路径下的所有文件夹和文件?下面本篇文章给大家介绍一下PHP删除一个路径下的所有文件夹和文件的方法.有一定的参考价值,有需要的朋 ...

最新文章

  1. 所有配置_一张图看懂iPhone12的所有配置!
  2. sqlite3数据库教程
  3. linux环境下配置虚拟主机域名,Linux下三种虚拟主机的配置方法
  4. 工业以太网交换机品牌排行榜,国产工业交换机哪个品牌好?
  5. 机器学习经典算法之PCA主成分分析
  6. .net Core 介绍
  7. 农村大学生的出路或许是读个真才实学的博士
  8. schema在oracle里是什么意思
  9. 基于(LinuxC语言)的UDP局域网聊天室
  10. 无线摄像头接有线如何改协议_WiFi中继器——让无线传输更简单
  11. 阿里巴巴使命、愿景、价值观、绩效管理中的六大价值观、TAE 与 TOP、聚石塔、阿里云的差异化服务
  12. java的pdf转永中_永中PDF转Word,你值得拥有!
  13. Nginx代理百度地图,实现内网访问百度地图
  14. Global Round 16D2. Seating Arrangements (hard version)(模拟,贪心)
  15. 圣诞表白html,圣诞节表白,最浪漫的表白方式
  16. Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)
  17. 录音转文字电脑软件有哪些?录音如何转文字?
  18. Gradle慢需要6min 现在20s解决了。
  19. 推荐好友和共同好友sql
  20. 【一级讲解】不可思议唤来不可思议β——数学排列组合

热门文章

  1. Java用freemarker导出word
  2. 2009网络视频监控业务分析及市场发展研究报告
  3. nagios自定义监控脚本
  4. python/selenium/chrome
  5. SQL Server死锁
  6. 9.VMware vsphere 5.0新体验-新增功能
  7. 知乎万赞回答!如何在一周内快速摸清一个行业?
  8. 企业即时通讯软件2013 即时通讯大手笔
  9. 飞秋2010下载又用什么样的技术
  10. 听说做程序员年入百万,能不能带带你表弟?