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

相关推荐
counting money2 小时前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
xiaohaiAIgeo3 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
小强库计算机毕业设计3 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质3 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军3 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐3 小时前
maven部分构建参数讲解
java·maven
ZC跨境爬虫3 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
kisbad4 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
憧憬成为java架构高手的小白4 小时前
langchain4j框架学习
java
Amir_zy4 小时前
Redis测试方法全攻略:冒烟、压测与稳定性验证
redis·压力测试