旅游平台day02

news2025/1/11 17:04:25

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)
    在这里插入图片描述

逻辑实现

细节优化

真实短信发送

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

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

相关文章

HashMap学习和线程安全的HashMap

HashMap的底层数据结构? HashMap在JDK1.8里面的Node数组加链表加红黑树,当链表长度大于8且数组长度大于64,链表转化为红黑树。当红黑树节点数小于6,红黑树转化为链表。在JDK1.7中是数组加链表。 为什么要用红黑树? 当…

react 第一个项目

sudo npx create-react-app reactdemo01 npx node.js工具 create-react-app 核心包(固定写法)用于创建react项目 后跟项目名层 启动一个新的 React 项目 – React 中文文档 //项目的根组件 //App -> index.js ->/Users/king/Documents/react…

芯片新闻-Global Semiconductor Sales Increase 5.3% Year-to-Year in November

11 月标志着一年多以来市场同比增长的第一个月;全球芯片销量环比增长2.9% 华盛顿——一月。 2024 年 12 月 9 日——半导体行业协会 (SIA) 今天宣布,2023 年 11 月全球半导体行业销售额总计 480 亿美元,比 2022 年 11 月的 456 亿美元总额增…

rust跟我学七:获取外网IP地址

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎么获取到本机的外网IP地址。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:[…

FPGA 原理图引脚标识细节

BGA引脚表示 1.1 FPGA此引脚要正确和清晰,会在“Package Pin”中用到次物理接口 1.2, MCU 只用管对应的GPIO逻辑接口就可以了 1.3,引脚名标识出bank, PS/PL, signal/differential 标识Bank电平 标识出对应Bank的电平,在电路设计中可以清晰…

C#调用Newtonsoft.Json将bool序列化为int

使用Newtonsoft.Json将数据对象序列化为Json字符串时,如果有布尔类型的属性值时,一般会将bool类型序列化为字符串,true值序列化为true,false值序列化为false。如下面的类型序列化后的结果如下: public class UserInfo…

量化研究员!你应该如何写一手好代码

即使是Quant Researcher, 写一手高质量的代码也是非常重要的。再好的思路,如果不能正确地实现,都是没有意义的。 写一手高质量的代码的意义,对Quant developer来讲就更是自不待言了。这篇笔记就介绍一些python best practice。 始…

npm install 无反应 npm run serve 无反应

说明情况:其实最开始我就是发现我跟着黑马的苍穹外卖的前端day2的环境搭建做的时候,到这一步出现了问题,无论我怎么 npm install 和 npm run serve 都没有像黑马一样有很多东西进行加载,因此我换了一种方法 1.在这个文件夹下cmd …

CSS 设置背景图片

文章目录 设置背景颜色设置背景图片背景图片偏移量计算原点背景图片尺寸设置背景图片位置设置背景图片重复方式设置背景范围设置背景图片是否跟随元素移动测试背景图片 本文概念部分参考:CSS背景background设置 设置背景颜色 background-color 设置背景颜色 设置…

【面试合集】说说你对 linux 用户管理的理解?相关的命令有哪些?

面试官:说说你对 linux 用户管理的理解?相关的命令有哪些? 一、是什么 Linux是一个多用户的系统,允许使用者在系统上通过规划不同类型、不同层级的用户,并公平地分配系统资源与工作环境 而与 Windows 系统最大的不同…

表的增删改查 进阶(一)

🎥 个人主页:Dikz12🔥个人专栏:MySql📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 1.数据库约束 约束类型 NOT NUll 约束 UNIQUE 约束 …

【Qt-license】误操作qt下载导致只能安装商业版试用十天,无法安装社区版

背景: 原本是为了学习qml,需要下载一个design studio,而这个需要比较新版的安装程序,但新版的安装程序官方都是online安装。于是从官网找下载链接。毕竟是英文的,又心急,误打误撞中我选择了商业版试用。 其…

2024华数杯B题四小问完整思路+四问数据代码+数据可视化图表

ICM B 题:光伏发电 完整资料在文末获取 该题目出题的难度与方向都与美赛 ICM 的题型高度相似,将本次竞赛当做美赛的 练手赛,个人认为是非常合适的一种选择。同时 28 号就可以出成绩,也可以在美赛前 实现查漏补缺,提…

dolphinscheduler分布式集群部署指南(小白版)

1.Apache DolphinScheduler概述 官方文档地址:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9 1.1.DolphinScheduler简介 摘自官网:Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景&#xf…

5-数组-矩阵置零

这是数组的第5篇算法,力扣链接。 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0…

国标GB28181安防视频监控EasyCVR级联后上级平台视频加载慢的原因排查

国标GB28181协议安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时还…

推荐五款超好用的AI写作自动生成器给你

随着人工智能技术的不断发展,AI写作自动生成器成为了现代写作的新宠。这些智能工具能够帮助我们快速生成高质量的文章,节省时间和精力。在本文中,我将向大家推荐五款超好用的AI写作自动生成器,希望能够为你的写作工作带来便利和效…

坚持刷题 | 二叉树的层序遍历

坚持刷题,老年痴呆追不上我,今天刷:二叉树的层序遍历 题目 102二叉树的层序遍历 考察点 数据结构基础: 能够正确地使用二叉树数据结构,并了解二叉树的基本性质。编程基础: 能够熟练使用Java编程语言&a…

大语言模型系列-Transformer

文章目录 前言一、Attention二、Transformer结构三、Transformer计算过程1. 编码器(Encoder)1)Self-Attention层2)Multi-Head-Attention层3)Add & Norm层 2. 解码器(Decoder)1)M…

【欢迎您的到来】这里是开源库get_local_info作者的付费专栏

您好, 我是带剑书生,开源库get_local_info的作者,欢迎您的到来,这里是我的付费专栏,会用更简洁的语言,更通俗的话语,来帮助您更好的学习rust,这里不仅仅讲解Rust在某些应用功能实现上…