个人旅游网(2)——功能详解——用户登录注册功能

文章目录

一、用户登录

用户登录界面:

用户登录时采用 手机号登录,登录界面总共含有 isLogged (判断用户是否登录)、find-by-telephone(输入手机号时校验手机号是否注册)、send-message(发送验证码) 、login-by-telephone(登录按钮)这4个接口。

1.1、接口详解

1.1.1、isLogged (判断用户是否登录)

已经登录成功的用户会被保存至session中:

java 复制代码
session.setAttribute("user",user);

因此在 isLogged 接口中,只需要通过 user 这样的key就可以从session中取出User对象,如果

User对象存在,则说明用户已经登陆成功,否则用户未登录。

java 复制代码
User user = (User) session.getAttribute("user");

1.1.2、find-by-telephone(输入手机号时校验手机号是否注册)

该接口在用户自前端界面输入手机号时,后端会获取前端输入的手机号参数,从数据库中通过手机号查询用户对象,如果用户对象存在,说明手机号已经注册,可以登录;否则用户未注册,手机号不可用于登录。

1.1.3、send-message(发送验证码)

(1)、先校验用户输入的手机号是否注册。

用户输入一个未注册的手机号码,则无法发送验证码。如果用户输入一个已注册的手机号,则可以发送验证码。

(2)发送验证码

首先需要通过代码随机生成6位数字验证码,借助发短信的工具类,将代码随机生成的验证码以及一些需要用到的参数传给发短信工具类里的方法,通过这个方法可以实现发验证码短信功能,验证一下调用该工具类方法的返回值是否与OK相等,相等说明验证码短信发送成功,将验证码存储进redis,后续登录时需要校验用户输入的验证码是否与redis中的验证码一致;不相等则验证码短信发送失败。

java 复制代码
String sendCode;
 sendCode = SmsUtils.send(telephone,signName,templateCode,randomCode);

1.1.4、login-by-telephone(登录按钮)

登录时需要 手机号、验证码,因此登录需要作以下校验:

(1)、校验手机号

在数据库中通过手机号查询User对象,如果查询得到,说明手机号已经注册,可以登录。

(2)、校验验证码

通过key从redis中取出验证码,先判断验证码有没有过期,没有过期再判断用户输入的验证码与从redis中获取的验证码是否一致,如果一致,说明用户登陆成功,将用户对象存入session中。

二、用户注册

用户注册页面:

用户注册时前端通过传入 用户名、密码、手机号、验证码 这4个参数进行注册。注册时后端总共含有 4 个接口,分别是 find-by-userName(校验用户名)、find-by-telephone(校验手机号)、send-sms(向手机发送验证码短信)、register(注册按钮)。

2.1、接口详解

2.1.1、find-by-userName(校验用户名)

后端先获取到前端用户输入的用户名参数,通过此参数在数据库中查找,如果存在User对象,说明该用户名已经被注册,不能再注册,反之可以注册。

2.1.2、ffind-by-telephone(校验手机号)

后端先获取到前端用户输入的手机号参数,通过此参数在数据库中查找,如果存在User对象,说明该手机号已经被注册,不能再注册,反之可以注册。

2.1.3、send-sms(向手机发送验证码短信)

跟登录时发送验证码短信步骤一致。调用的都是同一个方法。先随机生成6位数字验证码,将验证码传入发短信工具类的方法中,获取返回值。如果返回值为 "OK",说明验证码短信发送成功,将验证码存入redis中,方便后续注册时从redis中取出验证码,与用户输入的验证码比较是否一致;否则发送失败。

2.1.4、register(注册按钮)

注册按钮就需要校验 用户名、手机号、验证码,这3点都校验成功之后,才能注册成功。

(1)、校验用户名

(2)、校验手机号

(3)、校验验证码

从redis中取出验证码,与用户输入的验证码比较,如果一致,说明验证码正确。

(4)、随机生成盐值,对密码进行密码加盐

(5)、将用户注册输入的个人信息保存至数据库。

相关推荐
不是编程家2 分钟前
C++ 第三讲:内存管理
java·开发语言·c++
尸僵打怪兽3 分钟前
软考(中级-软件设计师)(0919)
java·c语言·数据库·计算机网络·软考·多媒体·软件设计师
Liii40314 分钟前
【ARM】Cache深度解读
java·arm开发·spring
litGrey1 小时前
Maven国内镜像(四种)
java·数据库·maven
丶白泽1 小时前
重修设计模式-结构型-桥接模式
java·设计模式·桥接模式
o独酌o1 小时前
递归的‘浅’理解
java·开发语言
无问8172 小时前
数据结构-排序(冒泡,选择,插入,希尔,快排,归并,堆排)
java·数据结构·排序算法
customer082 小时前
【开源免费】基于SpringBoot+Vue.JS在线文档管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Flying_Fish_roe2 小时前
Spring Boot-版本兼容性问题
java·spring boot·后端
程序猿进阶2 小时前
如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
java·ide·vscode·算法·面试·职场和发展·架构