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

 更新时间:2021年01月20日 11:05:18   作者:Jdoit CW  
这篇文章主要介绍了node中短信api实现验证码登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

2. 短信api的使用

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

2.1 登录平台进行参数配置

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

在这里插入图片描述

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

在这里插入图片描述

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 需要先申请再使用

在这里插入图片描述

3. 使用接口登录

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

请求发送验证码

在这里插入图片描述

手机收到验证码

在这里插入图片描述

验证码登录

在这里插入图片描述

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

相关文章

  • node.js中的fs.fstat方法使用说明

    node.js中的fs.fstat方法使用说明

    这篇文章主要介绍了node.js中的fs.fstat方法使用说明,本文介绍了fs.fstat的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 如何在Node.js中使用async函数的方法详解

    如何在Node.js中使用async函数的方法详解

    这篇文章主要为大家介绍了如何在Node.js中使用async函数的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • NodeJs爬虫框架Spider基础使用教程

    NodeJs爬虫框架Spider基础使用教程

    这篇文章主要为大家介绍了NodeJs爬虫框架Spider基础使用教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 使用travis-ci如何持续部署node.js应用详解

    使用travis-ci如何持续部署node.js应用详解

    最近在学习使用 travis-ci 对项目进行持续集成测试,所以下面这篇文章主要给大家介绍了关于使用travis-ci如何持续部署node.js应用的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • 浅析Node.js中的内存泄漏问题

    浅析Node.js中的内存泄漏问题

    这篇文章主要介绍了浅析Node.js中的内存泄漏问题,Node.js是使JavaScript应用在服务器端运行的一款框架,需要的朋友可以参考下
    2015-06-06
  • node_modules文件夹删除失败的有效解决办法

    node_modules文件夹删除失败的有效解决办法

    在前端开发过程中,node_modules文件夹是一个必不可少的组成部分,里面存放着项目所需的各种依赖包,在实际操作中,很多开发者可能会遇到删除 node_modules 文件夹失败的问题,本文将详细介绍一种简单有效的解决办法,帮助你顺利删除node_modules文件夹,需要的朋友可以参考下
    2024-12-12
  • 详解通过源码解析Node.js中cluster模块的主要功能实现

    详解通过源码解析Node.js中cluster模块的主要功能实现

    这篇文章主要介绍了详解通过源码解析Node.js中cluster模块的主要功能实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • nodejs实现生成文件并在前端下载

    nodejs实现生成文件并在前端下载

    这篇文章主要介绍了nodejs实现生成文件并在前端下载,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 详解Node.js中的模块化方法

    详解Node.js中的模块化方法

    这篇文章主要为大家介绍了Node.js的模块化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Node.JS使用Sequelize操作MySQL的示例代码

    Node.JS使用Sequelize操作MySQL的示例代码

    Node.JS提供了操作数据库的基础接口,本篇文章主要介绍了Node.JS使用Sequelize操作MySQL的示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-10-10

最新评论