node中使用短信验证功能(阿里云为例)
2022/2/26 12:22:10
本文主要是介绍node中使用短信验证功能(阿里云为例),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、选择短信平台
短信平台有很多,这里我选择阿里云,详细步骤如下:
- 进入短信控制台,对要发送的短信格式进行配置,如果没有签名,需要申请签名后操作(注意:需要自己已有阿里云账号且实名认证成功)
- 按照如下步骤配置:
- 配置好后就可以生成一个AccessKey ID(存在于安全信息管理),用于写node服务代码,如:
- node中代码案例如下:
const Core = require('@alicloud/pop-core'); //cwen 调用阿里短信模块(需先安装) //对阿里短信服务API进行配置 let client = new Core({ accessKeyId: '<accessKeyId>', // 按照上面步骤及阿里云提示在阿里云平台申请 accessKeySecret: '<accessSecret>', // 先申请 endpoint: 'https://dysmsapi.aliyuncs.com', //无需更改 apiVersion: '2017-05-25' //无需更改 }); //配置请求方式 let requestOption = { method: 'POST' }; //生成随机四位数,模拟验证码 function rander(max, min) { return Math.floor(Math.random() * (max - min)) + min } // 存储手机号+验证码(方便验证) var loginInfo = []; //验证手机号是否已经发送个验证码 let validate = (phone) => { return loginInfo.some(item => item.phone === phone) } //验证验证码是否一致 let validateCode = (phone, code) => { return loginInfo.some(item => (item.phone === phone && item.code == code)) } //用阿里云api发送短信验证(验证码登录) let sendLoginCroeCode = async(req, res) => { let { phone } = req.body; let randCode = rander(1000, 9999); var params = { "RegionId": "cn-hangzhou", "PhoneNumbers": phone, // 客户端手机号 "SignName": "小陈应用ya", //签名 "TemplateCode": "SMS_197625305", //模板,用于发送文字信息 "TemplateParam": JSON.stringify({ 'code': randCode }) //指定要发送的验证码(此处以rander 函数为例) } //发送验证码之前判断手机号是否注册过 if (await isRegister(phone)) { // 此处为数据库操作 client.request('SendSms', params, requestOption).then((result) => { if (result.Code == 'OK') { res.send({ status: 200, msg: '发送成功' }); loginInfo.push({ phone: phone, code: randCode }); console.log(randCode) } else { res.send({ status: 400, msg: '发送失败' }) } }) } else { res.send({ status: 400, msg: '该手机号未注册' }) } } //验证码登录接口 let phoneCodeLogin = async(req, res) => { let { phone, code } = req.body; if (validate(phone)) { //判断手机号是否发送过验证码 if (validateCode(phone, code)) { // 判断验证码与手机号是否匹配 let user = await isFirstLogin(phone); // 此处为数据库操作,获取用户信息 res.send({ status: 200, msg: '登录成功', data: user[0] }) loginInfo = []; // 登录成功,立马清空数组,以免无法再次发送验证码 } else { res.send({ status: 400, msg: '验证码错误' }) } } else { res.send({ status: 400, msg: '未获取验证码' }) } } //如果在其它文件中使用,将此文件暴露并在其它文件引入
5.使用,此文章为完结,近期会进行修改!
提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦
这篇关于node中使用短信验证功能(阿里云为例)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)