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

news2024/9/21 23:43:25

文章目录

  • 一、用户登录
    • 1.1、接口详解
      • 1.1.1、isLogged (判断用户是否登录)
      • 1.1.2、find-by-telephone(输入手机号时校验手机号是否注册)
      • 1.1.3、send-message(发送验证码)
      • 1.1.4、login-by-telephone(登录按钮)
  • 二、用户注册
    • 2.1、接口详解
      • 2.1.1、find-by-userName(校验用户名)
      • 2.1.2、ffind-by-telephone(校验手机号)
      • 2.1.3、send-sms(向手机发送验证码短信)
      • 2.1.4、register(注册按钮)

一、用户登录

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

1.1、接口详解

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

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

session.setAttribute("user",user);

因此在 isLogged 接口中,只需要通过 user 这样的key就可以从session中取出User对象,如果
User对象存在,则说明用户已经登陆成功,否则用户未登录。

User user = (User) session.getAttribute("user");

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Guarded Suspension 保护性暂定模式 以及嵌套死锁问题

多线程交互时,满足条件才去执行,否则阻塞一直到满足条件。当然可以用wait/notify实现。 本文用JUC包下的reentrantlock和其条件变量来完成。 文章目录 首先定义Predicate 和GuardAction;然后定义Blocker如何使用完整代码如下嵌套死锁问题 首…

PWMI模式测频率占空比

开启时钟 GPIO 时基单元 输入捕获初始化部分 配置两个IC通道同时捕获同一个引脚的模式 //快捷将电路配置成PWMI标准的标准结构,只支持通道1、2不支持3、4 //只需要传入一个通道的函数,此函数同时会把另一个通道配置为相反的配置,实现PWMI…

python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存及转存关于OSI的七层模型和TCP/IP四层模型

一、python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存 做一个简单的事:使用python读取一个txt文件,里面存储着N行用户id,需要一行行读取后再读取另一个存储用户昵称的txt文件,判断昵称是否有重复&am…

已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分检索值为90的元素时,检索成功需比较的次数是( )。A.1

已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分检索值为90的元素时,检索成功需比较的次数是&a…

【Python系列】text二进制方式写入文件

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C++笔记---模板初阶

1. 初识模板 模板是什么 模板就是一种通用的模型,只要我们给出模板,编译器就可以自动帮助我们自动生成函数或类。 模板又分为函数模板和类模板。 模板的意义 我们在使用函数重载的过程中,常常会遇见下面的情况: void Swap(i…

业务资源管理模式语言03

示例: 图3 表示了IdentifyTheResource 模式的实例,其中“Product”扮演“Resource”角色。 图3 ——IdentifyTheResource 模式的实例 下一个模式: 完成IdentifyTheResource,下一个模式是QualifyTheResource(2&#…

使用 nuxi clean 命令清理 Nuxt 项目

title: 使用 nuxi clean 命令清理 Nuxt 项目 date: 2024/9/1 updated: 2024/9/1 author: cmdragon excerpt: nuxi clean 命令是管理和维护 Nuxt 项目的重要工具,它帮助你快速清理生成的文件和缓存,确保开发环境的干净。通过定期使用这个命令,你可以避免由于缓存或生成文件…

python 天气与股票的关系--第3部分,建立模型

起因(目的): 继续瞎折腾。 过程: 假设有下面这些规则: 天气中的温度, 如果最高温度大于 36, 那么就是坏天气。如果最低温度小于 5, 那么也是坏天气。如果下雨, 下雪, 那么也是坏天气。其他情况为 好天气 import pandas as pd…

AVL树建立

AVL树是在二叉搜索树基础上实现的,与二叉搜索树不同的是,AVL树的左右子树高度相差不超过1. AVL树的旋转 大致分为四类: 单旋: 左左——右旋:使平衡因子为-2的父节点与左子树相连,该节点的左节点与左孩子…

spring boot 项目 prometheus 自定义指标收集和 grafana 查询--方法耗时分位数指标

auth author JellyfishMIX - github / blog.jellyfishmix.comLICENSE LICENSE-2.0 说明 网上有很多 promehteus 和 grafana 配置,本文不再重复,只介绍自定义部分。目前只介绍了分位数指标的收集和查询,常用于方法耗时的指标监控。 自定义…

Python函数(进程和线程)

Python基础语法文章导航: Python基础(01初识数据类型&变量)Python基础(02条件&循环语句)Python基础(03字符串格式化&运算符&进制&编码)Python基础(04 基础练习…

【媒体人必备】免费的 AI 配音神器,还有黑神话悟空的配音

【媒体人必备】免费的 AI 配音神器,还有黑神话悟空的配音 在短视频风靡全球的时代,TikTokVoice 提供了一个功能强大、操作简单的在线文字转语音工具,支持多种语言和热门AI配音角色。本文将带你了解这个工具的独特之处,以及如何利用…

【计算机组成原理】计算机系统的层次结构——计算机软件

计算机系统的层次结构 导读一、计算机软件的分类二、计算机语言三、计算机系统的层次结构3.1 从计算机语言的角度来理解多级层次结构3.2 计算机层次之间的关系3.3 指令集体系结构(ISA) 结语 导读 大家好,很高兴又和大家见面啦!&a…

Redis(13)| 主从复制

关键词:主从复制,主从数据一致性,同步 带着问题阅读 主从复制解决了什么问题?主从复制的原理(过程)是什么?主从切换时是如何减少数据丢失的 前言 我在前已经给大家图解了 AOF 和 RDB&#x…

创新之光闪耀,点赋科技在第十三届创新创业大赛中绽放光彩

近日,第十三届创新创业大赛决赛落下帷幕,这场充满激情与挑战的赛事吸引了众多优秀企业参与角逐。在激烈的竞争中,点赋科技脱颖而出,荣获第三名的佳绩。 创新创业大赛一直是企业展示实力、交流创新理念的重要平台。本次大赛中&…

p2p、分布式,区块链笔记: Merkle-DAG和Merkle-Tree的区别与联系

Merkle-DAG和Merkle-Tree的区别与联系 结构: Merkle-Tree 是一种二叉树结构,每个非叶子节点是其子节点哈希的哈希。它具有层次结构,通常用于验证数据的完整性。Merkle-DAG(有向无环图)是一种更通用的图结构,其一个节点…

142. Go操作Kafka(confluent-kafka-go库)

文章目录 Apache kafka简介开始使用Apache Kafka构建生产者构建消费者 总结 之前已经有两篇文章介绍过 Go如何操作 kafka 28.windows安装kafka,Go操作kafka示例(sarama库) 51.Go操作kafka示例(kafka-go库) Apache ka…

django外键表查询

Django外键(ForeignKey)操作以及related_name的作用-CSDN博客 django模型中外键操作_django的model的contain外键-CSDN博客 通过基本表可以查外键表 删基本表可以删外键表

【Redis】Redis 持久化 AOF、RDB—(七)

目录 一、AOF 日志二、RDB 内存快照 Redis 一旦服务器宕机,内存中的数据将全部丢失,从后端数据库恢复这些数据,对数据库压力很大,且性能肯定比不上从 Redis 中读取,会拖慢应用程序。所以,对 Redis 来说&…