旅游平台day02

1. 用户注册

  • 概述:
    常见的注册方式:邮箱注册、手机号注册、昵称注册、或者以上几种同时支持
    本项目仅仅支持手机号注册

  • 需求:
    项目启动后,访问regist.html进入注册页面

手机号校验

前后台都需要对手机号进行校验

  1. 前端校验:手机号码格式校验?使用正则表达式,需要使用js对手机格式进行合法性认证,验证不通过,页面提示,通过进入下一步校验
    第一位:1开头
    第二位:3 5 7 4 9 8
    长度:11为
    必须为数字
创建一个正则表达式来校验手机号码格式通常取决于特定国家的号码规则。
以国际通用的手机号码格式为例,通常手机号码是由国家代码(可选)、一个运营商的代码,
紧随着一个特定的号码序列组成的。
例如,对于中国的手机号码,通常是以13、14、15、16、17、18或19开头的11位数字。

一个简单的正则表达式,用于校验中国的手机号码格式,可以是:

^1[3-9]\d{9}$

这个正则表达式的解释:
- `^` 表示字符串的开始。
- `1` 表示手机号码以数字1开始。
- `[3-9]` 表示第二位数字可以是3到9中的任意一个。
- `\d{9}` 表示接下来是任意9个数字(`\d` 代表任意一个数字,`{9}` 指定这样的数字有9个)。
- `$` 表示字符串的结束。

这个正则表达式仅适用于中国的手机号码格式。
如果您需要校验其他国家的手机号码格式,正则表达式可能会有所不同,
需要根据该国的手机号码规则来调整。
  1. 后端校验:唯一性校验?是否已经注册?后端提供一个接口进行手机号码校验
    这个需求前端无法实现,需要后端查询数据库进行校验。
  • 接口设计:
请求地址:/users/phone/exists
请求方式:GET
请求参数:phone=手机号
返回类型:{code:200,msg:"success",data:true or false}
  • 需求:基于手机号查询对象

  • 编码:
    controller层:
    在这里插入图片描述

    service层:在这里插入图片描述

  • 测试
    在这里插入图片描述

  • 接口联调:将后端接口与前端对接
    register.js中手机号校验代码:
    在这里插入图片描述
    需要注意跨域问题
    违背同源策略(协议、IP、端口号任意一个不同),产生跨域问题
    在这里插入图片描述

在这里插入图片描述
解决待选方案:1. 客户端代理 2. 后端允许跨域
选择方案:后端允许跨域,需要在网关配置允许跨域
回忆在springboot如何配置跨域?
在这里插入图片描述

springboot跨域配置在springcloud中能否行得通?springcloud如何配置跨域?gateway跨域配置?
官方文档寻找。
配置跨域示例:
在这里插入图片描述
在网关的配置文件中完成允许跨域配置即可:
在这里插入图片描述
跨域问题解决:
在这里插入图片描述

  • 跳转到注册页面
    输入昵称、密码、重复密码,前端对这些进行非空、两次密码一致性校验

短信验证码

当用户填写完注册信息,单击获取验证码按钮时,需要发送验证码给之前验证通过的手机号。

  1. 前端:

    • 点完获取验证码按钮后,调用后端接口实现发送短信功能
    • 发送完短信后,立即禁用发送验证码按钮,不可点击
    • 按钮文字变成倒计时,时间到了之后,再重新恢复点击按钮
  2. 后端

    • 定义发送短信接口,收到请求后,向对应手机号发送短信
      实现步骤:
      1、验证手机合法性
      2、生成验证码
      3、将验证码保存起来->如何保存验证码?存哪里?
      4、调用第三方发短信接口发送验证码->如何发?
      5、响应前端验证码发送成功

      验证码存储方案:
      业务需求:
      - 效率高
      - 时效性
      - 跨服务共享
      在这里插入图片描述
      如果是单体项目,不涉及到跨服务访问,session最佳。
      但是我们是分布式项目,涉及到跨服务访问,但是从性能角度来说,redis最合适。
      如果对数据安全性要求高,那么优先考虑mysql。

      Redis存储验证码:
      数据结构:
      String:k-v,操作简单,redis中外部key数量增加,会导致redis整体性能受到影响。
      Map:一个外部key,可以保存多个内部k-v键值对,可以避免外部key占用过多;但是会导致单个map对象数据量过大->大key,这样redis性能也会受到影响;map的时效性只能针对外部key,无法针对内部key做过期时间。
      综上分析,String结构存储验证码最合适
      key设计:唯一性、可读性、扩展性
      验证码key:用户:场景:手机号 USERS:REGISTER:VERIFY_CODE:15518497712
      验证码value:验证码的值

    接口设计:
    在这里插入图片描述
    编码:
    controller:
    在这里插入图片描述
    service:
    验证码生成方法:
    在这里插入图片描述

    发送短信整体业务:
    在这里插入图片描述
    短信服务:阿里云短信服务
    导入maven依赖
    复制示例代码
    稍微修改实例代码(access-key-id,access-key-secret)
    在这里插入图片描述

逻辑实现

细节优化

真实短信发送

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序+前后端开发学习材料2-(视图+基本内容+表单组件)

学习来源 视图 1.swiper 滑块视图容器。其中只可放置swiper-item组件,否则会导致未定义的行为。 显示面板指示点indicator-dots 基础内容 1.icon 图标组件 实例演示 2.progress 进度条。组件属性的长度单位默认为px,咱用rpx。 实例演示 这…

selenium爬虫爬取当当网书籍信息 | 最新!

如果对selenium不了解的话可以到下面的链接中看基础内容: selenium爬取有道翻译-CSDN博客 废话不多说了下面是代码并且带有详细的注释: 爬取其他类型的书籍和下面基本上是类似的可以自行更改。 # 导入所需的库 from selenium import webdriver from …

node.js(express.js)+mysql实现注册功能

文章目录 实现步骤一、获取客户端提交到服务器的用户信息,对表单中的数据,进行合法性的效验 代码如下:二、检测用户名是否被占用三、对密码进行加密四、插入新用户(完整代码)总结 实现步骤 一、获取客户端提交到服务器的用户信息…

Vue3中动态组件使用

一&#xff0c;动态组件使用&#xff1a; 应用场景&#xff1a;动态绑定或切换组件 应用Vue3碎片&#xff1a; is 1.使用 a.组件A <div class"layout-base"><Button>红茶</Button> </div>a.组件B <div class"layout-base"&g…

【深度强化学习】目前落地的挑战与前沿对策

到目前为止&#xff0c;深度强化学习最成功、最有名的应用仍然是 Atari 游戏、围棋游戏等。即使深度强化学习有很多现实中的应用&#xff0c;但其中成功的应用并不多。为什么呢&#xff1f;本文总结目前的挑战。 目录 所需的样本数量太大探索阶段代价太大超参数的影响非常大稳定…

【MATLAB源码-第115期】基于matlab的QSM正交空间调制系统仿真,输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 正交空间调制&#xff08;QSM&#xff09;是一种先进的无线通信技术&#xff0c;它通过利用发射端的多天线阵列来传输信息&#xff0c;从而提高了数据传输的效率和速率。这种技术的关键在于它使用天线阵列的空间特性来编码额…

YOLOv8改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)

一、本文介绍 本文给大家带来的改进机制是一种重参数化的卷积模块OREPA,这种重参数化模块非常适合用于二次创新,我们可以将其替换网络中的其它卷积模块可以不影响推理速度的同时让模型学习到更多的特征。OREPA是通过在线卷积重参数化(Online Convolutional Re-parameteriza…

uni-app 经验分享,从入门到离职(年度实战总结:经验篇)——上传图片以及小程序隐私保护指引设置

文章目录 &#x1f525;年度征文&#x1f4cb;前言⏬关于专栏 &#x1f3af;关于上传图片需求&#x1f3af;前置知识点和示例代码&#x1f9e9;uni.chooseImage()&#x1f9e9;uni.chooseMedia()&#x1f4cc;uni.chooseImage() 与 uni.chooseMedia() &#x1f9e9;uni.chooseF…

掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…

【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined

写在前面的话&#xff1a;idea如何配置golang&#xff0c;自行百度 问题1&#xff1a;通过idea的terminal执行go test报错 ✘ xxxxxmacdeMacBook-Pro-3  /Volumes/mac/.../LearnGoWithTests/hello  go test go: go.mod file not found in current directory or any parent …

腾讯云 腾讯云服务器 - 腾讯云 产业智变·云启未来

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

jmeter-线程数设置为1,循环10次没问题,循环100次出现异常

一、多次尝试&#xff0c;发现出现异常的接口大致相同。 解决办法&#xff1a;在第一个出现异常的接口下添加超时时间&#xff0c;固定定时器&#xff1a;2000ms&#xff0c;再次运行就没问题了。 二、压力机自身存在的问题 1&#xff09;在网络编程中&#xff0c;特别是在短…

时间序列预测 — BiLSTM-Attention实现单变量负荷预测(Tensorflow)

专栏链接&#xff1a;https://blog.csdn.net/qq_41921826/category_12495091.html 专栏内容 ​ 所有文章提供源代码、数据集、效果可视化 ​ 文章多次上领域内容榜、每日必看榜单、全站综合热榜 ​ ​ ​ ​ ​ ​ ​ 时间序列预测存在的问题 ​ 现有的大量方法没有真正的预测未…

canal server初始化源码分析

CanalLauncher类是canal server端启动的入口类&#xff0c;跟随代码进行深入。 在开始之前&#xff0c;我们可以先了解下&#xff0c; canal 配置方式 ManagerCanalInstanceGenerator&#xff1a; 基于manager管理的配置方式&#xff0c;实时感知配置并进行server重启Spring…

零售EDI:Babylist EDI 项目案例

Babylist 与各种不同的品牌和零售商合作&#xff0c;包括婴儿用品、玩具、衣物和其他相关产品的制造商。用户可以在 Babylist 上浏览各种不同的产品&#xff0c;并根据自己的需求和喜好选择适合的项目。本文将为大家介绍对接Babylist 的EDI项目案例。 Babylist EDI 需求 传输协…

经典计算机网络面试题

1.说说HTTP常用的状态码及其含义&#xff1f; 状态码 类别 1xx 信息性状态码 2xx 成功状态码 3xx 重定向状态码 4xx 客户端错误状态码 5xx 服务端错误状态码 日常开发中的状态码&#xff1a; 状态码 含义 101 切换请求协议 200 请求成功 301 永久性重定向&…

线上党建展厅有哪些功能,如何搭建一个成功的线上党建展厅

引言&#xff1a; 随着互联网的飞速发展&#xff0c;线上党建展厅成为党建宣传的新平工具&#xff0c;它提供了一个方便的党建学习、交流和展示的空间。那么线上党建展厅有哪些功能&#xff0c;如何搭建一个成功的线上党建展厅呢&#xff1f; 一、线上党建展厅有哪些功能 1.组…

Wheeltec小车的开发实录(0)

配置静态ip&#xff08;可以联网&#xff09; 首先在你正常链接网络的时候打开“Connection Information”(我的是wifi&#xff0c;而且是手机热点&#xff0c;所以我手机就相当于一台路由器) 查看路由ip 观察到Default Route 是192.168.***.225这就是我手机的地址&#xff0…

node.js(express.js)+mysql实现登录功能

文章目录 前言实现步骤 实现步骤一、检测登录表单的数据是否合法&#xff08;3&#xff09;新建schema/user.js&#xff08;4&#xff09;在routes/use.js中引入schema/user.js中的方法reg_login_schema&#xff0c;代码如下&#xff1a; 二、根据用户名查询用户的数据三、判断…

嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

文章目录 一 、硬件介绍二 、实验&#xff1a;LED闪烁、LED流水灯、蜂鸣器提示2.1 需求1&#xff1a;面包板上的LED以1s为周期进行闪烁。亮0.5s,灭0.5s.....2.2 需求2: 8个LED实现流水灯 三、硬件介绍-按键开关、光敏电阻四、 实验 按键控制LED、光敏传感器控制蜂鸣器4.1 需求1…