node中短信api实现验证码登录的示例代码


Posted in Javascript onJanuary 20, 2021

1. node服务器搭建+数据库的连接

此处操作比较简洁易懂,可参考:node服务器快速搭建

2. 短信api的使用

对于短信api ,此处以 阿里云的短信服务为例(只要是有短信服务的平台皆可使用)

2.1 登录平台进行参数配置

1. 进入短信控制台,对要发送的短信格式进行配置,如果没有签名,需要申请签名后操作

node中短信api实现验证码登录的示例代码

2. 点击查看 API Demo 进入配置生成的api;此时选择 Node.js

node中短信api实现验证码登录的示例代码

2.2 根据生成的api 在项目中使用

代码注释详尽

const Core = require('@alicloud/pop-core'); //cwen 调用阿里短信模块(需先安装)
//cwen 对阿里短信服务API进行配置
let client = new Core({
 accessKeyId: '<accessKeyId>', // 需要先申请(步骤在下文)
 accessKeySecret: '<accessSecret>', // 需要先申请(步骤在下文)
 endpoint: 'https://dysmsapi.aliyuncs.com', //无需更改
 apiVersion: '2017-05-25' //无需更改
});
//cwen 请求方式
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))
}

//cwen 用阿里云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: '未获取验证码'
    })
  }
}

// 注意:最后记得把接口暴露出去

注意accessKeyId、accessKeySecret 需要先申请再使用

node中短信api实现验证码登录的示例代码

3. 使用接口登录

此处以Postman 接口调试工具为例,手机号为数据库中注册过的手机号

请求发送验证码

node中短信api实现验证码登录的示例代码

手机收到验证码

node中短信api实现验证码登录的示例代码

验证码登录

node中短信api实现验证码登录的示例代码

到此这篇关于node中短信api实现验证码登录的示例代码的文章就介绍到这了,更多相关node 短信验证码登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Jquery 模板数据绑定插件的使用方法详解
Jul 08 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
Nov 29 Javascript
js格式化时间的方法
Dec 18 Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
Sep 26 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
vue用ant design中table表格,点击某行时触发的事件操作
Oct 28 Javascript
如何让vue长列表快速加载
Mar 29 Vue.js
vue实现按钮切换图片
Jan 20 #Vue.js
node脚手架搭建服务器实现token验证的方法
Jan 20 #Javascript
Vue实现图书管理案例
Jan 20 #Vue.js
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 #Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 #Vue.js
js实现电灯开关效果
Jan 19 #Javascript
jquery实现穿梭框功能
Jan 19 #jQuery
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
js prototype截取字符串函数
2010/04/01 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
js实现文字截断功能
2016/09/14 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
transform python环境快速配置方法
2018/09/27 Python
python安装scipy的方法步骤
2019/06/26 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
安全生产标语
2014/06/06 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
青年文明号申报材料
2014/12/23 职场文书
服务员岗位职责范本
2015/04/09 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js