纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

SpringBoot登陆注册逻辑 SpringBoot实现网站的登陆注册逻辑记录

xbhog   2021-10-12 我要评论
想了解SpringBoot实现网站的登陆注册逻辑记录的相关内容吗,xbhog在本文为您仔细讲解SpringBoot登陆注册逻辑的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:springboot实现注册登录功能,springboot实现注册功能,springboot用户登录,下面大家一起来学习吧。

该文章主要是为了整理之前学习项目中的知识点,并进行一定程度的理解。

技术列表:

  • SpringBoot
  • MySQL
  • redis
  • JWT

用户登录逻辑:

首先打开前端登录页面,F12进行网页URL抓取:

随便输入信息,查看请求后端的地址:

地址:

请求 URL: http://localhost:8888/login
请求方法: POST
状态代码: 200 
远程地址: [::1]:8888
引用站点策略: strict-origin-when-cross-origin

很明显,前端用户输入账户,通过post请求传递给后端接收:

@RequestMapping("/login")
public class LoginController {
    @Autowired
    private LoginService loginService;
    @PostMapping
    public Result login(@RequestBody LoginParam loginParam){
        return loginService.login(loginParam);
    }

}

这里为了方便传输,把前端参数封装成对象传入.

后端验证查询账户的逻辑操作:

  • 获取账户密码
  • 判断账户密码是否为空
  • 密码加密,采用MD5加密+盐的操作
  • 通过处理的账户密码(加密)进行数据库查询
String pwd = DigestUtils.md5Hex(password + salt);
//根据账号和加密的密码进行数据库的查找
SysUser sysUser = sysUserService.findUser(account, pwd);

查找成功,使用JWT工具包生成token,保存到redis中

向前端返回生成的token,检查token,进行登录

{
    "code": 200,
    "success": true,
    "msg": "success",
    "data": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzQ4OTY1MDIsInVzZXJJZCI6MSwiaWF0IjoxNjM0MDA3NDcwfQ.9elJSiGa-QARLqKGLTeFW9go7ujsArd0QV_HihHfEm0"
}

这里就实现了JWT和redis实现简单的登录验证功能。

用户注册逻辑:

前端请求:

前端传递账户名、密码、昵称,调用http://localhost:8888/register地址进行post传参,后端接收参数

1、获取前端参数,判断参数是否合法(是否为空)

2、判断账户是否存在,存在,返回账户已经被注册了的json数据

3、不存在、注册账户(生成User对象)调用保存接口,保存的时候需要将密码进行MD5+盐 加密

4、生成token令牌

String token = JWTUtils.createToken(sysUser.getId());

5、存入redis 并返回

这里存入redis是因为,注册成功后会跳转到前端页面,前端页面会去redis中找user的信息进行对比,如果存在,显示登录,反之登录失败。

6、注意加上事务,一旦中间的任何过程出现问题,注册的用户需要回滚(防止脏数据)

将生成得token传递给前端:

{
    "code": 200,
    "success": true,
    "msg": "success",
    "data": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzQ4NDc0MzQsInVzZXJJZCI6MTQ0NzU1MjU3MDYzMDQzNDgxNywiaWF0IjoxNjMzOTU4NDAxfQ.zn5meG_lUWROuz7TmkUGS0MTjO1-TDQa42uM_-uhXqs"
}

前端调用该接口,:

http://localhost:8888/users/currentUser

前端将获得token传递给后端接口currentUser,在redis中找到user信息,校验信息,解析数据,返回用户基本信息,前端解析

前端index.js部分代码段:

login({commit}, user) {
      return new Promise((resolve, reject) => {
        login(user.account, user.password).then(data => {
          if(data.success){
            commit('SET_TOKEN', data.data)
            setToken(data.data)
            resolve()
          }else{
            reject(data.msg)
          }
        }).catch(error => {
          reject(error)
        })
      })

到这里就是简单的登录注册的功能,上述内容都是部分代码段,如果有需要学习的可以评论留言。

参考文献:

【码神之路】博客开发;

总结


相关文章

猜您喜欢

  • python基础:面向对象 python基础:面向对象详解

    想了解python基础:面向对象详解的相关内容吗,扁桃在本文为您仔细讲解python基础:面向对象的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:python基础,python面向对象,下面大家一起来学习吧。..
  • js鼠标移入移出卡片切换 js实现鼠标移入移出卡片切换内容

    想了解js实现鼠标移入移出卡片切换内容的相关内容吗,不晓er在本文为您仔细讲解js鼠标移入移出卡片切换的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:js鼠标卡片切换内容,js鼠标移入移出卡片切换,js鼠标移入移出,下面大家一起来学习吧。..

网友评论

Copyright 2020 www.ebook4download.net 【E4软件站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式