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

逻辑实现

细节优化

真实短信发送

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

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

相关文章

iOS上h5长按识别图片二维码,图片会默认放大,禁用这一默认行为

iOS上h5长按识别图片二维码&#xff0c;图片会默认放大&#xff0c;禁用这一默认行为 测试代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

ES可视化工具--ElasticHD

说明 ElasticHD 是 github 上的一个开源的项目&#xff0c;所以他没有官方网站&#xff0c;但 github 上的项目界面也可称为是它的官方界面了。 在 github 上直接搜索 ElasticHD 即可找到它&#xff0c;下面我将留下它的直接跳转链接。ElasticHD 下载 在 github 上搜索到之后…

[Error]连接iPhone调试时提示Failed to prepare the device for development.

环境&#xff1a; iPhone 7 Plus iOS 15.8 Xcode14.2 问题&#xff1a; 连接iPhone设备运行时&#xff0c;设备旁提示如下文案。 Failed to prepare the device for development. 这时强行点击运行按钮&#xff0c;会弹窗提示如下文案。 The run destination ZDMiPhone is n…

Apache Doris (六十四): Flink Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Flink与Doris版本兼容

CTF CRYPTO 密码学-3

题目名称&#xff1a;反编译 题目描述&#xff1a; 分析 题目给出一个pyc后缀的文件&#xff0c;需要使用uncompyle6模块去还原成py文件 uncompyle6简介 uncompyle6 是一个 Python 反编译器&#xff0c;它能够将 Python 字节码&#xff08;.pyc 文件&#xff09;转换回源代码&…

【征服redis7】谈谈Redis的RDB持久化方式

从现在开始&#xff0c;我们来探讨redis的一个非常重要的问题——集群&#xff0c;要讨论集群&#xff0c;我们需要先理解redis持久化数据的方法&#xff0c;因为集群本质上就是将一个集群的数据同步到其他机器上。 Redis 6的持久化机制主要有两种&#xff1a;RDB&#xff08;…

springboot开启HTTPS

目录 一、前言 HTTP和HTTPS的含义以及区别 二、域名映射 三、添加SSL证书 四、Http转Https 五、内网穿透 一、前言 我们平常写完一个接口&#xff0c;其访问一般都是使用http协议 我们最终想要的结果是使用安全的HTTPS来访问 在我们开始实现之前&#xff0c;我们要先搞明…

烟火识别视频分析系统的应用-河北消防机器人项目

在当前的智能化、信息化时代背景下&#xff0c;河北省消防部门采纳了一项革命性的技术方案 —— 烟火识别视频分析系统&#xff0c;结合消防机器人的使用&#xff0c;大幅提升了火灾预防与应急处理能力。该项目的核心在于通过高精度的视频监控&#xff0c;实时分析识别潜在的火…

【笔记】Helm-3 主题-6 Chart仓库指南

Chart仓库指南 本节介绍如何创建和使用chart仓库。在高层级中&#xff0c;chart仓库是打包的chart存储和分享的位置。 社区的Helm chart仓位于 Artifact Hub &#xff0c;欢迎加入。不过Helm也可以创建并运行您自己的chart仓库。该指南将介绍如何操作。 Artifact Hub 先决条…

Microsoft Word 设置底纹

Microsoft Word 设置底纹 References 打开文档页面&#xff0c;选中特定段落或全部文档 在“段落”中单击“边框”下三角按钮 在列表中选择“边框和底纹”选项 在“边框和底纹”对话框中单击“底纹”选项卡 在图案样式和图案颜色列表中设置合适颜色的底纹&#xff0c;单击“确…

S32K3系列 --- 硬件I2C Mcal配置

前言 网上看到很多I2C的教程,基本都是模拟I2C,现在S32K3的芯片支持硬件I2C,我想着就配一个硬件的出来吧,这边记录一下,供大家学习。 一、I2C原理 这里主要教大家如何去配置,去使用。 原理的话可以参考这篇文章: 一文搞懂I2C通信总线_i2c通信的详细讲解-CSDN博客 I2…

Spring5深入浅出篇:Spring工厂设计模式拓展应用

Spring5深入浅出篇:Spring工厂设计模式拓展应用 简单工厂实现 这里直接上代码举例子 UserService.java public interface UserService {public void register(User user);public void login(String name, String password); }UserServiceImpl.java public class UserService…

Three.JS教程1环境搭建、场景与相机

Three.JS教程1环境搭建、场景与相机 一、Three.JS简介二、环境搭建1. 开发准备2. 安装 three.js3. 新建文件index.htmlmain.js 4. 关于附加组件5. 启动 三、创建场景1. 场景的概念2. 相机的概念3. 相机的几个相关概念&#xff08;1&#xff09;视点&#xff08;Position&#x…

Ability to Use Oracle Data Pump to Export and Import the Unified Audit Trail

Ability to Use Oracle Data Pump to Export and Import the Unified Audit Trail 从18c版本开始才能使用数据泵工具导出统一审计的记录

DAY03_Spring—自动装配注解模式优化XML文件

目录 1 Spring注解模式1.1 自动装配1.1.1 说明1.1.2 配置规则 1.2 注解模式1.2.1 关于注解的说明1.2.2 注解使用原理1.2.3 编辑配置文件1.2.4 属性注解 1.3 实现MVC结构的纯注解开发1.3.1 编写java代码1.3.2 编辑xml配置文件1.3.3 编写测试类1.3.4 关于注解说明1.3.5 关于Sprin…

Ubuntu20.4 Mono C# gtk 编程习练笔记(二)

界面设计习练后&#xff0c;下面写一些程序设计心得。 程序结构 先看一下程序总体结构&#xff0c;先在program.cs中找到main入口&#xff0c;在命名空间下是MainClass类&#xff0c;Main函数进入后首先建立应用程序环境 Application.Init&#xff0c;然后对MainWindow进行实…

【嘉立创EDA-PCB设计指南】3.网络表概念解读+板框绘制

前言&#xff1a;本文对网络表概念解读板框绘制&#xff08;确定PCB板子轮廓&#xff09; 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2&#xff0c;将设计的原理图转为了PCB&#xff0c;在PCB界面下出现了所有的封装&#xff0c;以及所有的飞线属性&…

【开源】基于JAVA语言的智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

【Docker】安装 Nginx 容器并部署前后端分离项目

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

GRU门控循环单元神经网络的MATLAB实现(含源代码)

在深度学习领域&#xff0c;循环神经网络&#xff08;RNN&#xff09;因其在处理序列数据方面的卓越能力而受到广泛关注。GRU&#xff08;门控循环单元&#xff09;作为RNN的一种变体&#xff0c;以其在捕捉时间序列长距离依赖关系方面的高效性而备受推崇。在本文中&#xff0c…