短信验证码的实现

需求

发送验证码短信然后接收验证码再完成注册

具体操作

1>点击"获取验证码"的按钮,会发送sendVerifyCode的异步请求并带上参数phone(number)

查看前端代码html

查看对应的js代码

2>后端接口的实现

接口接收请求,获取到手机号,生成验证码code,拼接出短信,并发送短信(模拟)

  // 发送验证码操作@GetMapping("/sendVerifyCode")public JsonResult sendVerifyCode(String phone){userInfoService.sendVerifyCode(phone);return JsonResult.success();}

3>实现类的业务逻辑

  • 获取手机号码phone和创建验证码code
  • 拼接短信,发送短信,并告诉在多少分钟内使用时效
  • 返回短信发送提示(后端模拟)
  • 真实短信接口(下步做)
  • 判断成功还是失败
  • 缓存验证码,设置缓存时效
    @Overridepublic void sendVerifyCode(String phone) {// 获取手机号码phone 和 创建验证码codeString code = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 4);// 拼接短信,发送短信 并告诉时效StringBuilder builder = new StringBuilder(80);builder.append("您注册的验证码是:").append(code).append(",请在").append(Consts.VERIFY_CODE_VAI_TIME).append("分钟之内使用!");// 返回短信发送提示System.out.println(builder.toString());  // 模拟发送// 以phone为key  code为value  缓存验证码 设置时效5分钟userInfoRedisService.setVerifyCode(phone,code);}

4>真实短信接口的实现

可以去网站去找第三方短信接口来实现,这里以京东万象的短信接口为例

 

 依据请求实例的提醒去获取关键信息 appkey和url

问题来了,如何在java代码中发起http请求?

解答-->spring提供了一个工具类,RestTemplate  能发起http请求

完善以上代码

    @Overridepublic void sendVerifyCode(String phone) {// 获取手机号码phone 和 创建验证码codeString code = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 4);// 拼接短信,发送短信 并告诉时效StringBuilder builder = new StringBuilder(80);builder.append("您注册的验证码是:").append(code).append(",请在").append(Consts.VERIFY_CODE_VAI_TIME).append("分钟之内使用!");// 返回短信发送提示System.out.println(builder.toString());  // 模拟发送// 如何在java代码中发起http请求   jdk---URLHttpConnection--httpString appkey = "97841c945f568728327fd6f6e5aa3076";String url = "https://way.jd.com/chuangxin/dxjk?mobile={0}&content=【创信】你的验证码是:{1},3分钟内有效!&appkey={2}";// spring提供了一个工具类-->RestTemplate -->发起http请求RestTemplate template = new RestTemplate();// 以phone为key  code为value  缓存验证码 设置时效5分钟userInfoRedisService.setVerifyCode(phone,code);}
 

5>优化代码(解决硬编码问题)

可以借助xml配置文件去解决

在核心子项目的core.properties中将appkey和url数据填进去

有个注意的点,因为中文编码问题,最好去网上进行编码转换

sms.url=https://way.jd.com/chuangxin/dxjk?mobile={0}&content=【创信】你的验证码是:{1},3分钟内有效!&appkey={2}
sms.appkey=97841c945f568728327fd6f6e5aa3076

在实现类上

   // 从配置获取信息 解决硬编码问题@Value("${sms.appkey}")private String appkey;@Value("${sms.url}")private String url;

 

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

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

相关文章

目前可以用的短信验证码平台哪个比较好?

目前短信验证码大家应该都很熟悉了,尤其当你在一些购物网站等注册会员或者修改信息时都需要验证码。而短信验证码是商家为了降低重复注册或者非法注册,就需要短信验证码来帮忙用户的真实性。那么,目前可以用的短信验证码平台哪个比较好呢&…

短信验证码登录的实现

原理说明开发环境具体实现过程 原理说明 在网站登录时经常会遇到短信验证码登录的情况,其原理如下:首先我们需要一个短信发送接口,前端发送手机号码到后端,后端随机生成一个验证码并存入redis,并且设置该key的过期时间。(这里可以…

低代码真的是“行业毒瘤”?

低代码/零代码到底是“行业毒瘤”还是“大势所趋”?碰瓷“码农”万年户,低代码火了这些年,你还觉得是毒瘤吗? 低代码/零代码作为比较有争议的话题,常年被拿来碰瓷码农,也是很多行业大佬关注的对象。 阿里云…

chatgpt赋能python:Python如何下载人人文库

Python如何下载人人文库 人人文库是一个知识分享社区,用户可以在平台上上传、下载和分享文档。 Python是一种强大的编程语言,具有强大的网络和数据处理库。今天,我们将介绍如何使用Python来下载人人文库中的文档。 首先,我们需…

秘密共享差分隐私原理解析

1. 隐私计算全貌  可以看到,隐私计算技术从1979年就开始了,历经四代从安全多方计算(MPC)、到差分隐私(DP)、到集中加密技术(TEE),再到联邦学习(FL)。 2. 秘密共享 secret Sharing 就是“秘密分享”或者“秘密共享”…

保护个人隐私和数据安全的方法与策略

引言 随着信息技术的普及和发展,我们享受到了便捷的互联网服务,但与此同时,个人隐私和数据安全问题也日益受到威胁。在这个所谓的"裸奔"时代,网络攻击、数据泄露和隐私侵犯已经成为常态。然而,我们并不无助…

商业秘密安全保护

新项目涉及商密(商业秘密的密级:非商密、普通商密、核心商密),以下是对商密安全保护规则的调研。 《中央企业商业秘密安全保护技术指引》(保密[2015]3号)《中央企业商业秘密安全技术保护实施指南》&#x…

华为ensp练习题

首先子网划分如下图: 然后配路由ip,创建路由接口对路由器R1-R4每个都要配两个环回地址,R5配一个环回地址: interface LoopBack ? 然后配静态路由:也是ip route-static 然后配缺省路由:也是ip route-stat…

python绘图-matplotlib应用笔记

目录 figure/axis/axes/plt分别表示什么?pltFigure:可以解释为画布。Axes 是图像中具有数据空间的区域Axis 坐标轴总结 图像元素说明中文解决问题绘图实例 图像坐标轴调整 参考文章 figure/axis/axes/plt分别表示什么? matplot绘图的基础就是由上述图片中…

Python绘图(模板)

目录 2D绘图 折线图 条形图 直方图 散点图 饼图 堆积条形图 ​编辑 对称条形图 3D绘图 3D散点图 3D条形图 附录: 颜色表color 图标marker" " 固定代码模版 2D绘图 折线图 import matplotlib.pyplot as plt #上一行代码也可替换为 i…

【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现

利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用。 如下图,有一个供用户自己任意画图、涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细。 实质上这里的橡皮擦就是白色的画笔,根…

Python画图matplotlib库的使用scatter(),plot()方法教学实例

Python画图主要用到matplotlib这个库。scatter和 plot 函数最常用 这个函数几乎可以调节图的一切属性,包括但不限于:坐标范围,axes标签字号大小,xtick,ytick标签字号,图线宽,legend字号等。 具体参数参看官…

绘图神器draw.io(写文必备)

绘图神器draw.io(写文必备) 前言 大家早上好,我是毛小悠,一个前端开发工程师。 最近发现一个绘图神器,没错,就是标题中的draw.io。免费、开源,功能强大,真的非常适合程序员。 我…

基于Attention的机器翻译模型,论文笔记

论文题目:Neural Machine Translation by Jointly Learning to Align and Translate 论文地址:http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2a5ea0.pdf GIF来源:https://jalammar.github.io/visualizing-neural-m…

Transformer(四)--实现验证:transformer 机器翻译实践

转载请注明出处:https://blog.csdn.net/nocml/article/details/125711025 本系列传送门: Transformer(一)–论文翻译:Attention Is All You Need 中文版 Transformer(二)–论文理解:transformer 结构详解 Transformer(三)–论文实…

机器翻译之Facebook的CNN与Google的Attention

传统的seq2seqfacebook的cnn 结构特点 position embedding卷积的引入GLU控制信息的流动attention google的attention 结构特点 KVQ的思维架构multi-head attentionattention的多种应用 参考资料 机器翻译的常用架构是seq2seq,可是seq2seq中的核心模型RNN是序列模型…

探索机器翻译:从统计机器翻译到神经机器翻译

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

[机器翻译]——pivot-based zero-shot translation based on fairseq

文章目录 前言翻译到en生成"伪"的、到英语的数据文件把每一个zs语言对翻译到en从fairseq-generate生成的文件中,抽取纯en文件 把en数据和所有zs语言对的tgt数据形成平行语料,然后做预处理形成en到tgt的平行语料预处理 在en到tgt语言的"伪…

大语言模型的多语言机器翻译能力分析

来自:南大NLP 进NLP群—>加入NLP交流群 01 研究动机 以ChatGPT为代表的大语言模型(Large Language Models, LLM)在机器翻译(Machine Translation, MT)任务上展现出了惊人的潜力。通过情景学习(In-Contex…

嗖的一下第二弹,这些好看的皮肤直接一键收下~~

✨前言 📢首先祝大家假期愉快🚀 这个假期,大家是怎么玩的呢❓ 小博主我趁着假期也摆了几天😜 因此有好几天没有更新文章了…… 今天偷偷的发一篇文章,浅浅做个样子吧😬 今儿写的文章是继上次写的&#xff…