短信验证码的发送、接收验证流程

1.短信发送

 首先我们平时使用短信验证信息的时候一般都是这样的表单,首先需要我们用户输入手机号码,然后点击获取验证码按钮,这时候获取验证码的按钮需要请求我们的后端接口并携带用户的手机号给后端

2.后端接收到手机号并发送验证码

    public boolean sendCode(String mobile) {if(redisLock.tryLock("sdfsdf", 50)) {try {String authCode = String.valueOf(getRandNum(1, 999999));System.out.println(authCode);log.info("测试验证码:"+authCode);myRedis.set(mobile, authCode, 300);boolean f = sendAuthCode(mobile, authCode);return f;}finally {redisLock.unlock("sdfsdf");}}throw new ApiException("操作頻繁", 500);}

(1)首先使用

String authCode = String.valueOf(getRandNum(1, 999999));

生成6位数的验证码然后把生成的验证码存入dedis中, myRedis.set(mobile, authCode, 300);

redis的key是用户的手机号码,value是生成的验证码,并设置该验证码只在redis中存在300秒

(2)然后调用发送短信的方法或者接口,我这里把发送短信的方法封装成了sendAuthCode(mobile,authCode)方法,这一步完成了向用户手机发送验证码的步骤。

注意提醒:这里需要使用redisLock来对发送验证码的进行相应的限制,第一个验证码发送之后的50秒内不允许再次发送验证码。

这时候就有人会有疑问了,这样是不是多此一举,前端的发送验证码的按钮一般都会有倒计时60秒的功能,60秒之内是变成灰色,不让用户点击的。后端用lock的目的就是为了防止有心之人恶意调取我们的接口。

3.接收验证码并验证

当我们前端的用户填写好了验证码之后,http请求需要把我们用户的手机号码+验证码发送到我们的后端

    @RequestMapping(value = "/checkSetMeal.json", method = RequestMethod.POST, consumes = Constants.APPLICATION_JSON, produces = Constants.APPLICATION_JSON)public ApiResult<Map<String, Object>> checkSetMeal(@RequestBody HandleDTO handleDTO) {Map<String, String> map = new HashMap<String, String>();map = handleDTO.getContractInfo();String _code_ = map.get("_code_");String _name_mobile_ = map.get("_name_mobile_");if (_code_!=null&&_code_!=""&&_name_mobile_!=null&&_name_mobile_!="") {String redisCode = redis.get(_name_mobile_);if (_code_ != null && !"".equals(_code_)) {if (_code_.equals(redisCode)) {redis.del(_name_mobile_);return doCheckSetMeal(handleDTO, CmmcSource.OLD_PLATFORM.getType());}return ApiResult.fail("验证码错误", 403);}return ApiResult.fail("验证码错误", 403);}return doCheckSetMeal(handleDTO, CmmcSource.OLD_PLATFORM.getType());}

我们先获取验证码和手机号码,首先判断两个是否为空,若为空则执行其他代码,若不为空,则需要进行短信验证码的验证工作。

首先我们需要从redis中取出之前存入的验证码,String redisCode = redis.get(_name_mobile_);

然后从redis中取出的验证码和用户输入的验证码进行核对,若核对正确则需要把在redis中的验证码删除redis.del(_name_mobile_).

总结:

我们会发现验证码的发送、验证,在逻辑上没有上面困难点。

不过我们还需注意一下几点:

1.前面的redislock的运用,保证我们短信发送接口的安全。

2.Redis来储存验证码,验证码需要在300秒之后自动删除

3.接收前端传来的手机号和验证码之后需要取出Redis中的验证码

4.若短信验证成功,则需要注销该手机号对应的验证码 在Redis中存储的结构为

PhoneNumber--code    就是Redis中的Key-value

关于Redis的使用请关注我的下一篇博客

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

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

相关文章

为什么只能转发测试信息,无法转发短信?

在安装配置双卡助手后&#xff0c;查看运行日志&#xff08;首页-功能面板-运行日志&#xff09;会发现&#xff0c;只有点击模拟转发时候&#xff0c;才能在微信收到转发信息&#xff0c;正常的短信根本没反应。 出现以上问题&#xff0c;首先查看当前短信识别模式&#xff0c…

验证短信延迟?是哪里出现问题

时常看到有人在注册或者在需要输入验证码的时候会这样做&#xff0c;一手拿着手机&#xff0c;眼睛盯着电脑上获取验证码的那60秒在倒计时。然后在收到验证码的时候快速的把眼睛转向手机&#xff0c;然后快速的回到电脑输入验证码。 你是不是已经想象出了这样的画面&#xf…

移动MAS发送短信,接受状态和接受回复【HTTP】

移动MAS短信平台就是一个发送短信的平台&#xff0c;可以发送普通短信、模板短信、一对一&#xff0c;一对多等短信 下面主要是基于Java&#xff08;HTTP方式&#xff09;实现短信的下行&#xff08;发送&#xff09;上行&#xff08;接受&#xff09;和接受短信状态 接口全是…

杂学第一篇:applescript检测手机号码是否注册imessage,imessages数据检测,imessages过蓝检测

一、检测数据的两种方式: 1.人工筛选&#xff0c;将要验证的号码输出到文件中&#xff0c;以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏&#xff0c;iMessage客户端会自动逐个检验该号码是否为iMessage账号&#xff0c;检验速度视网速而定。红色表示不是iMessage…

验证码、通知短信API常见使用问题

如今短信应用于我们生活工作的方方面面&#xff0c;注册或者登录一个应用可以用短信验证码快速登录&#xff0c;支付可以使用短信验证码&#xff1b;商家搞促销活动可以发送通知短信给客户&#xff0c;会员到期了商家可以发送告警短信给会员用户…可见验证码短信API和通知短信A…

程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

内测邀请:ChatGPT - PAM™ 工业界造车解决方案

作为 AI 界的「顶流」&#xff0c;生成式 AI 似乎正在变成无所不能的「创意机器」。它可以根据输入的信息&#xff0c;自动创造各种「新东西」&#xff0c;帮助人们在各个领域快速实现创作和开发。不仅仅是文字&#xff0c;设计、游戏、艺术作品…… 各种五花八门的需求&#x…

描述对未来计算机的畅想用英语作文,畅想未来人工智能的发展状况英语作文 关于畅想未来人工智能的发展状况的英语作文...

题目要求】H42答案圈 计算机科学的未来趋势是人工智能的一种&#xff0c;它是人类思维的研究和仿真&#xff0c;最终能够使人喜欢思考&#xff0c;为人类服务&#xff0c;帮助人们解决问题。随着科技越来越与人类生活相结合&#xff0c;随处可见的人工智能&#xff0c;让生活越…

小a的旅行计划

来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld文章目录 题目描述题解&#xff1a;代码&#xff1a; 题目描述 小a终于放假了&#xff0c;它想在假期中去一些地…

旅游计划

旅游n个城市&#xff0c;但并不是每一条路线花费都是一样的。想把所有的城市都旅游一遍&#xff0c;但是花费最小。 输入格式 第一行输入一个整数n,表示有n个城市 接下来有一个n*n的矩形&#xff0c;表示每两个城市之间的火车花费&#xff0c;每两个城市之间的花费不会超过100…

CHAP7:使用 R 编程进行数据分析

1.了解 R 的基础知识 R 是一种编程语言&#xff0c;可用于在数据分析过程的每个阶段执行任务。在这部分课程中&#xff0c;您将了解 R 和 RStudio&#xff0c;这是 R 的集成开发人员环境 (IDE)。您将探索使用 RStudio 与 R 一起工作的好处。RStudio 使您能够轻松利用 R 的特性…

记录常用的R语言的一些零碎知识(包括ggplot2作图)

平常使用R的时候&#xff0c;会遇到一些小问题&#xff0c;这时就会去上网查&#xff0c;但查到结果&#xff0c;如果不记录起来&#xff0c;常常会遇到相同的问题时再次查询&#xff0c;费时费力&#xff0c;因此决定记录下这些零碎的R语言知识&#xff08;不定时更新&#xf…

R语言入门-数据分析实操(tyidyverse工作流+代码)

1. 数据分析的开端&#xff0c;Tidyverse&#xff1f; tidyverse 是一个清晰的 R 包集合&#xff0c;在数据操作、探索和可视化领域提供统一的数据科学解决方案&#xff0c;这些解决方案具有共同的设计理念。它是由 RStudio 背后的首席科学家 Hadley Wickham 创建的。 tidyver…

从零开发基于chatGPT的社区交友系统 (前后端分离)丨主页框架 03

03 主页框架 前言开工引用iconfont字体图标template代码style代码页面展示 路由局部跳转script代码 总结 前言 上一章我们实现了基础的主题切换功能&#xff0c;这一章我们开始搭建主页主要框架&#xff0c;并测试一下我们的切换主题功能。 开工 引用iconfont字体图标 这里…

制造焦虑的一边去! AI 不会让我们失业,还会带来大量新机遇!

点击上方“编程技术进阶”&#xff0c;加"星标" 重磅干货&#xff0c;第一时间送达 大家好&#xff0c;我是编哥。先送上涛哥用 AI 画的美女&#xff0c;目测这个是涛哥最近的梦中情人 声明&#xff1a;本文引用图片来自涛哥&#xff08;公众号&#xff1a;涛哥聊Pyt…

AI崛起,我们应该保持自我意识!

目录 前言西部世界剧情&#xff1f;辅助还是威胁&#xff1f;如何自我保护?总结 前言 人工智能技术发展迅速&#xff0c;为我们的生活带来了很多便利。但就个人来说这些技术都是可控的&#xff0c;我并不怎么担心。直到ChatGPT的到来&#xff0c;把我惊呆了。一边感叹AI技术的…

GPT帮你写简历:求职日企篇

正文共 927 字&#xff0c;阅读大约需要 3 分钟 求职者必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 快速生成日文简历 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | nanako 编辑者 | Linda 在应聘…

chatgpt赋能Python-python如何构造矩阵

Intro Python是一门强大的编程语言&#xff0c;拥有广泛的应用领域&#xff0c;其中矩阵运算是其中一个重要的方向。在本文中&#xff0c;我们将介绍如何使用Python构造矩阵&#xff0c;并介绍常见的矩阵运算。 什么是矩阵&#xff1f; 矩阵是由一组有序数排列成的矩形阵列&…

chatgpt赋能python:Python怎么手动输入矩阵

Python怎么手动输入矩阵 若想在使用Python进行科学计算或机器学习时&#xff0c;我们经常会使用矩阵。要能够利用Python处理这些矩阵&#xff0c;我们需要了解如何输入一个矩阵。本文将介绍如何通过代码手动输入矩阵。 什么是矩阵 矩阵是一个二维数组&#xff0c;它包含了行…