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

网友投稿 1512 2022-12-02

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);

}

}tXnnh

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

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

获取账户密码

判断账户密码是否为空

密码加密,采用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.getIhttp://d());

5、存入redis 并返回

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

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

将生成得token传递给前端:

{

"code": 200,

"success": true,

"msg": "success",

"data": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzQ4NDc0MzQsInVzZXJJZCI6MTQ0NzU1MjU3MDYzMDQzNDgxNywiaWF0IjoxNjMzOTU4NDAxfQ.zn5meG_lUWROuz7TmkUGS0tXnnhMTjO1-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)

})

})

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

参考文献:

【码神之路】博客开发;

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:啤酒游戏及其牛鞭效应的模拟之二级模式
下一篇:《大型网站技术架构》学习笔记——架构模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~