node中使用短信验证功能(阿里云为例)

一、选择短信平台
短信平台有很多,这里我选择阿里云,详细步骤如下:

  1. 进入短信控制台,对要发送的短信格式进行配置,如果没有签名,需要申请签名后操作(注意:需要自己已有阿里云账号且实名认证成功)
  2. 按照如下步骤配置:在这里插入图片描述
  3. 配置好后就可以生成一个AccessKey ID(存在于安全信息管理),用于写node服务代码,如:在这里插入图片描述
  4. node中封装一个发短信校验功能模块如下:
// 发短信功能模块的封装:
const SMSClient = require('@alicloud/sms-sdk');//用户调用阿里短信平台的框架
const accessKeyId = 'LT4FterKWkj5LJAmT72QdV';//短信平台获取accessKeyId
const secretAccessKey =  '4AS4WvwwZPTFe9wO3PxeHajKwZ8C';//短信平台获取accessKeySecretlet smsClient = new SMSClient({accessKeyId,secretAccessKey});//实例一个发送短信的实例let sendLoginCroeCode = async (phone,verCode) => {//发送短信功能封装为函数供其它需要发送短信的地方调用try {//参数校验if (!phone) throw ('缺少号码');if (!verCode) throw ('缺少验证码');//构造请求参数:var dataToSend = {PhoneNumbers: phone,SignName: '签名',TemplateCode: 'SMS_220354743',TemplateParam: JSON.stringify({ code: verCode }),};console.info('验证码是->', verCode, 'options:', dataToSend);//let res = await smsClient.sendSMS(dataToSend);//调用smsClient实例的方法:sendSMS,发送验证码let { Code } = res;// 处理状态:if (Code === 'OK') {//处理返回参数return res;}throw '短信发送失败!'} catch (error) {throw ('发送短信验证码失败,您的操作可能过于频繁,请稍微再试!');}
};// 导出此方法:
module.exports = sendLoginCroeCode;

5.node中使用此模块开发接口:

// 所有路由(后端接口):
const app = require('./bodyparses.js');//配置过bodyparse的express
const sendLoginCroeCode = require('./notecheck.js');//引入短信校验功能模块// 短信校验功能:// 实现短信验证码接口供前端使用:
app.post('/api/notechecks',(request,response)=>{
// 随机生成一个四位数验证码用于传入阿里短信平台和写入用户信息到数据库时使用:
var verCode = String(1000 + parseInt(Math.random() * 1000000)).substr(0, 4);let jsonnote = request.body;sendLoginCroeCode(jsonnote.phone,verCode);//传入手机号和验证码调用该函数去让阿里短信平台发送短信给用户
});
//提示:此代码为主要代码,其它框架部分省略。

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

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

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

相关文章

mysql 5.5数据库主从配置步骤详解

上次给大家介绍了mysql 5.1主从搭建配置教程,这次我们来实现mysql 5.5的主从复制,其实大体上配置是差不多的,只有点细微的差别. 系统:centos 5.x 需要的软件包:mysql-5.5.33.tar.gz 环境准备: 服务器a:192.168.10.151 (主) 服务器b:192.168.10.152 (从)1.安装前准备wget http:/…

如何画圆柱_什么是最速降线?如何来验证一下呢?这里用SolidWorks来试一试

一个仅受重力的物体,从一个点出发,沿着一条没有摩擦的斜坡滚动到另外一个点。肯定有一个斜坡使物体运动的时间最短。这个斜坡所在的曲线就是“最速降线”。关于这个最速降线是怎么计算出来,我并不知道,但是他有一个结论&#xff0…

python读取配置文件使用_python 使用 ConfigParser 读取和修改INI配置文件

在程序开发中,使用独立的配置文件来配置一些参数常见且方便,配置文件的解析或修改并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,ConfigParser模块解析的配置文…

根据用户id查询菜单列表(菜单权限问题)

根据用户id查询菜单列表(菜单权限问题): 最高级用户菜单效果图: 较低级别用户菜单效果图: SQL语句分析图: 根据用户id查询对应菜单(权限)SQL语句: SELECT * FROM us…

C# 设计模式 - 单例模式 演示

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DBImportTool.Sgile{//第一种单例模式Demopublic class A{private volatile static A _instance null;private static readonly object lockHelp…

pycharm中配置r语言_【R语言】R语言中的循环

编程中减少代码重复的两个工具,一是循环,一是函数。循环,用来处理对多个同类输入做相同事情(即迭代),如对不同列做相同操作、对不同数据集做相同操作。R语言有三种方式实现循环:(1&a…

钉钉api 获取 accesstoken_Thinkphp5.X异常接管后通过钉钉机器人推送通知

大多团队在生产环境下都会关闭app_debug,所以相对应的错误信息就不能实时查看到。以下分享一个目前团队项目正在用的生产环境下相关技术人员能第一时间获取通知的方法:先上效果图:以上通知是在钉钉中显示!下面介绍开发步骤&#x…

js中将有层级关系的一维数据转换为父子级关系的二维数据、菜单权限三级层级数据实现(树形结构数据)

很久没有发文了&#xff0c;今天发点不一样的&#xff0c;如下&#xff1a; <script>// 一维数据&#xff1a;let arrData[{ r_id: 1, role_name: 开发商, n_id: 1, txt: 主页 },{ r_id: 1, role_name: 开发商, n_id: 2, txt: 项目 },{ r_id: 1, role_name: 开发商, n_id…

可用性

1&#xff0c;百度百科 http://baike.baidu.com/view/1436.htm 2转载于:https://www.cnblogs.com/ylbtech/p/4026677.html

修改器内置脚本编写_Node.js 中实践 Redis Lua 脚本

对别人的意见要表示尊重。千万别说&#xff1a;"你错了。"——卡耐基Lua 是一种轻量小巧的脚本语言&#xff0c;用标准 C 语言编写并以源代码形式开放&#xff0c;其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。由于 Lua 语言…

项目上线,部署到服务器(腾讯服务器),http协议及https协议(微信小程序必须https协议才可发布)

一、准备服务器&#xff1a; 1.选择自己的服务器&#xff0c;这里有很多服务器比如&#xff0c;阿里服务器&#xff0c;腾讯服务器等&#xff0c;这里我选择腾讯服务器做测试&#xff0c;其官网&#xff1a;https://cloud.tencent.com/&#xff0c;微信扫码登录后如下进入首页…

队列的基本操作_算法与数据结构(五) 栈和队列

? 工欲善其事&#xff0c;必先利其器。栈和队列 - Stack And Queue栈如何理解栈呢&#xff1f;后进者先出&#xff0c;先进者后出&#xff0c;这就是典型的 "栈" 结构。04_栈和队列-栈结构从栈的操作特性上来看&#xff0c;栈是一种“操作受限”的线性表&#xff0c…

Linq GroupJoin 使用

备忘: var data BoshccEntities.Current.TB_MB_1.GroupJoin(BoshccEntities.Current.TB_MB_2, o > o.HospitalID, m > m.MemberID, (t, m) > new { t, m }).GroupJoin(BoshccEntities.Current.TB_CM_3, o > o.t.ServiceCode, s > s.DicNum, (o, s) > new { …

八邻域轮廓跟踪算法_结合mRMR选择和IFCM聚类的遥感影像分类算法

随着遥感成像技术的发展&#xff0c;高分遥感影像空间分辨率逐年提高&#xff0c;已经成为获取地物信息的主要数据来源之一。高分影像分类作为遥感影像处理的重要任务之一&#xff0c;在地理国情普查与监测、数字城市建设、城市规划等领域具有广阔的应用前景。高分影像具有纹理…

node.js中net模块、node实现tcp通信

node.js中net 一、net模块感知&#xff1a; net模块用于创建基于TCP&#xff08;或IPC&#xff09;通信的服务器或客户端&#xff0c;它是nodejs内置模块&#xff0c;直接使用require(‘net’)的方式引入&#xff0c;类似http模块。 二、创建一个tcp服务器&#xff1a; //1…

python做一个考试系统_Python在线考试系统防作弊功能的思路和实现

我自己用Python开发了一套教学管理软件&#xff0c;具有在线点名、提问、答疑、交作业、自测、在线考试、数据导入导出与汇总、Word试卷生成等多个功能&#xff0c;其中在线考试系统具有防作弊的功能&#xff0c;不少人觉得很神奇&#xff0c;其实思路和代码都很简单。主要的原…

ebs oracle 落伍了吗_向不了解oracle EBS的人介绍Oracle EBS

体系架构界面风格模块组成模块标准功能ETLRACTEST> ETLRACTEST>begin2 for i in 110000 loop3 insert into test values (i);4 end loop;5 end;6 / PL/SQL procedure successfullycompleted. Elapsed: 00:00:00.44 ETLRACTEST> set autot traceETLRACTEST>ETLRACTE…

struts2--文件上传大小

struts2--文件上传大小 Struts2文件上传的大小限制问题 问题&#xff1a;上传大文件报错……解决&#xff1a;修改struts.xml文件中的参数如下<constant name"struts.multipart.maxSize" value"55000000"/><action name"UploadFile" cl…

element-plus中导航高亮不自动刷新问题

解决使用element-plus el-submenu时页面被this.$router.push(“xxx”)跳转后&#xff0c;导航菜单高亮不能自动刷新问题&#xff0c;需要注意以下几点&#xff1a; 在el-menu加上routerindex必须绑定路由的path,参考上面的例子&#xff0c;/不能少default-active设为当前路由&…

计算机二级考试python怎么报名_计算机二级报名流程和条件

对于第一次参加全国计算机二级考试的考生来说&#xff0c;他们对于计算机二级报名流程和条件不是清楚&#xff0c;小编这就来给大家梳理一下。计算机二级报名流程 一、报名 分为网上报名和现场报名。 网上报名&#xff1a;考生在规定时间内登录本省计算机资格网站&#xff0c;按…