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

相关推荐
吴声子夜歌8 分钟前
Redis 3.x——集群故障转移
java·数据库·redis·集群
Java面试题总结16 分钟前
mybatis插件
java·tomcat·mybatis
橘子海全栈攻城狮1 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring
smartvxworks1 小时前
Linux 实时内核(Linux Real-Time Kernel)详解:原理、实践与优化
java·linux·服务器
qizayaoshuap1 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos
AC赳赳老秦1 小时前
OpenClaw 采集任务日志审计:全程记录采集行为,满足合规溯源与企业审计要求
java·大数据·python·数据挖掘·数据分析·php·openclaw
风起洛阳@不良使2 小时前
spring中xml和注解开发的对比
xml·java·spring
Tenifs2 小时前
关闭 IDEA 的英文单词拼写检查
java·intellij-idea
captain3762 小时前
创建多线程程序
java·java-ee
野蛮人6号2 小时前
黑马天机学堂Day01-08.搭建项目环境-本地开发部署方式——不知道nacos的密码是什么
java·spring cloud·黑马程序员·天机学堂·黑马天机学堂