• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
待该州伙 显示全部楼层 发表于 2021-10-25 19:33:37 |阅读模式 打印 上一主题 下一主题
1. node服务器搭建+数据库的毗连

此处操作比较简洁易懂,可参考:node服务器快速搭建
2. 短信api的使用

对于短信api ,此处以 阿里云的短佩服务为例(只要是有短佩服务的平台皆可使用)
2.1 登录平台进行参数设置
1. 进入短信控制台,对要发送的短信格式进行设置,假如没有署名,需要申请署名后操作


2. 点击查察 API Demo 进入设置天生的api;此时选择 Node.js

2.2 根据天生的api 在项目中使用
代码解释详尽
  1. const Core = require('@alicloud/pop-core'); //cwen 调用阿里短信模块(需先安装)
  2. //cwen 对阿里短信服务API进行配置
  3. let client = new Core({
  4. accessKeyId: '<accessKeyId>', // 需要先申请(步骤在下文)
  5. accessKeySecret: '<accessSecret>', // 需要先申请(步骤在下文)
  6. endpoint: 'https://dysmsapi.aliyuncs.com', //无需更改
  7. apiVersion: '2017-05-25' //无需更改
  8. });
  9. //cwen 请求方式
  10. let requestOption = {
  11.   method: 'POST'
  12. };
  13. //# 生成随机四位数,模拟验证码
  14. function rander(max, min) {
  15.   return Math.floor(Math.random() * (max - min)) + min
  16. }
  17. //# 存储手机号+验证码(方便验证)
  18. var loginInfo = [];
  19. //# 验证手机号是否已经发送个验证码
  20. let validate = (phone) => {
  21.   return loginInfo.some(item => item.phone === phone)
  22. }
  23. //# 验证验证码是否一致
  24. let validateCode = (phone, code) => {
  25.   return loginInfo.some(item => (item.phone === phone && item.code == code))
  26. }
  27. //cwen 用阿里云api发送短信验证(验证码登录)
  28. let sendLoginCroeCode = async(req, res) => {
  29.   let { phone } = req.body;
  30.   let randCode = rander(1000, 9999);
  31.   var params = {
  32.       "RegionId": "cn-hangzhou",
  33.       "PhoneNumbers": phone, // 客户端手机号
  34.       "SignName": "小陈应用ya", //签名
  35.       "TemplateCode": "SMS_197625305", //模板,用于发送文字信息
  36.       "TemplateParam": JSON.stringify({ 'code': randCode }) //指定要发送的验证码(此处以rander 函数为例)
  37.     }
  38.      //# 发送验证码之前判断手机号是否注册过
  39.   if (await isRegister(phone)) { // 此处为数据库操作(可忽略)
  40.     client.request('SendSms', params, requestOption).then((result) => {
  41.       if (result.Code == 'OK') {
  42.         res.send({
  43.           status: 200,
  44.           msg: '发送成功'
  45.         });
  46.         loginInfo.push({
  47.           phone: phone,
  48.           code: randCode
  49.         });
  50.         console.log(randCode)
  51.       } else {
  52.         res.send({
  53.           status: 400,
  54.           msg: '发送失败'
  55.         })
  56.       }
  57.     })
  58.   } else {
  59.     res.send({
  60.       status: 400,
  61.       msg: '该手机号未注册'
  62.     })
  63.   }
  64. }
  65. //# 验证码登录接口
  66. let phoneCodeLogin = async(req, res) => {
  67.   let { phone, code } = req.body;
  68.   if (validate(phone)) { //判断手机号是否发送过验证码
  69.     if (validateCode(phone, code)) { // 判断验证码与手机号是否匹配
  70.       let user = await isFirstLogin(phone); // 此处为数据库操作,获取用户信息(可忽略)
  71.       res.send({
  72.         status: 200,
  73.         msg: '登录成功',
  74.         data: user[0]
  75.       })
  76.       loginInfo = []; // 登录成功,立马清空数组,以免无法再次发送验证码
  77.     } else {
  78.       res.send({
  79.         status: 400,
  80.         msg: '验证码错误'
  81.       })
  82.     }
  83.   } else {
  84.     res.send({
  85.       status: 400,
  86.       msg: '未获取验证码'
  87.     })
  88.   }
  89. }
  90. // 注意:最后记得把接口暴露出去
复制代码
留意
  1. accessKeyId、accessKeySecret
复制代码
需要先申请再使用

3. 使用接口登录

此处以Postman 接口调试工具为例,手机号为数据库中注册过的手机号
请求发送验证码

手机收到验证码

验证码登录

到此这篇关于node中短信api实现验证码登录的示例代码的文章就先容到这了,更多干系node 短信验证码登录内容请搜刮草根技能分享以前的文章或继续浏览下面的干系文章希望各人以后多多支持草根技能分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作