个人旅游网(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)、将用户注册输入的个人信息保存至数据库。

相关推荐
RainbowSea3 分钟前
用户中心——比如:腾讯的QQ账号可以登录到很多应用当中 02
java·spring boot·mysql
RainbowSea9 分钟前
用户中心——比如:腾讯的QQ账号可以登录到很多应用当中 01
java·spring boot·mysql
超浪的晨16 分钟前
Java List 集合详解:从基础到实战,掌握 Java 列表操作全貌
java·开发语言·后端·学习·个人开发
超浪的晨21 分钟前
Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
java·开发语言·后端·学习·个人开发
liliangcsdn39 分钟前
mac mlx大模型框架的安装和使用
java·前端·人工智能·python·macos
Shimiy1 小时前
第六章 面向对象编程------进阶
java
大葱白菜1 小时前
Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
java·后端
大葱白菜1 小时前
Java Map 集合详解:从基础语法到实战应用,彻底掌握键值对数据结构
java·后端
添乱1 小时前
「Java案例」判断是否是闰年的方法
java
FG.1 小时前
Day22
java·面试