node.js+uniapp(vue),阿里云短信验证码

reg.vue:

思路是:前端调用获取验证码的接口 ==> 后端生成验证码返回给前端 ==> 前端渲染验证码

<template>  <div>  <input class="sl-input" v-model="phone" type="tel" maxlength="11" placeholder="手机号" />  <button @click="sendSms">短信注册</button>  </div>  
</template>  <script>  
export default {  data() {  return {  phone: ''  };  },  methods: {  sendSms() {  console.log('电话号:', this.phone);  uni.request({  url: 'http://localhost:3000/valisms', // 你的后端服务地址  method: 'POST',  data: {  phoneNumbers: this.phone  },  success: (res) => {  if (res.data.success) {  console.log('短信发送成功:', res.data.response);  uni.showToast({  title: '短信发送成功',  icon: 'success'  });  } else {  console.log('短信发送失败:', res.data.message);  uni.showToast({  title: '短信发送失败',  icon: 'none'  });  }  },  fail: (err) => {  console.error('发送请求失败:', err);  uni.showToast({  title: '请求失败',  icon: 'none'  });  }  });  },  }  
};  
</script>  <style>  </style>

client.js:

地址:短信服务_云产品主页-阿里云OpenAPI开发者门户 (aliyun.com)

'use strict';
// This file is auto-generated, don't edit it
// 依赖的模块可通过下载工程中的模块依赖文件或右上角的获取 SDK 依赖信息查看
const Dysmsapi20170525 = require('@alicloud/dysmsapi20170525');
const OpenApi = require('@alicloud/openapi-client');
const Console = require('@alicloud/tea-console');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {
          static createClient() {
            // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
            // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378664.html。
            let config = new OpenApi.Config({
              // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
              accessKeyId: 'xxxx',
              // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
              accessKeySecret: 'xxxxxx',
            });
            // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
            config.endpoint = `dysmsapi.aliyuncs.com`;
            return new Dysmsapi20170525.default(config);
          }

     static async sendSms(phoneNumbers, code) {
        let client = Client.createClient();
        console.log('验证码是:',code);
        let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
          signName: 'xxx', // 替换为你的短信签名名称
          templateCode: 'xxxx', // 替换为你的短信模板 CODE
          phoneNumbers: phoneNumbers,
          templateParam: JSON.stringify({ code:code }),
        });
        let runtime = new Util.RuntimeOptions({});
            try {
              let response = await client.sendSmsWithOptions(sendSmsRequest, runtime);
              return response;
            } catch (error) {
             console.error('错误的原因是:',error);
            }
        }
 

}


module.exports = Client;
Client.sendSms(process.argv.slice(2));

server.js :

// server.js
const express = require('express');
const bodyParser = require('body-parser');
const Client  = require('./client');

const app = express();
const port = 3000;

app.use(bodyParser.json());

app.post('/valisms', async (req, res) => {
  const { phoneNumbers} = req.body;
  console.log('电话号:',phoneNumbers);
  const code = Math.floor(100000 + Math.random() * 900000).toString();  
  console.log('验证码是:',code);
  try {
    const response = await Client.sendSms(phoneNumbers, code);
    res.json({ success: true, message: '短信发送成功', response });
  } catch (error) {
    console.error('短信发送失败的具体原因:', error);
    res.status(500).json({ success: false, message: '短信发送失败' });
  }
});

app.listen(port, () => {
  console.log(`Server running on http://localhost:${port}`);
});

 三个文件搞定,要使用nod命令启动server,如进入相对应的路径执行:node server.js

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

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

相关文章

微信小程序毕业设计-微信食堂线上订餐系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【在线评论】不同视角下在线评论对客户满意度和推荐度的影响—推文分析—2024-07-01

今天的推文主题是【在线评论】&#xff0c;重点关注可以关注第四篇&#xff0c;很全面地分析了在线评论的信息多维性。 第一篇从客户的在线评论入手&#xff0c;将客户消费的动机为功利、享受、社会满足&#xff1b;第二篇是关于在线评论对消费者再次选择同一家酒店的机制探索…

MySQL之主从同步、分库分表

1、主从同步的原理 MySQL主从复制的核心是二进制日志 二进制日志&#xff08;binlog&#xff09;记录了所有DDL语句和DML语句&#xff0c;但不包括数据查询&#xff08;select、show&#xff09;语句。 1.1、复制分三步 master主库在事务提交时&#xff0c;会把数据变更记录…

电子战学习笔记01:电子战概论

0、写在文前 本人在学习电子战相关理论知识时&#xff0c;一直感觉无从下手&#xff0c;之后在老师的推荐下购买了《EW101&#xff1a;电子战基础》纸质书籍学习&#xff0c;所以将自己的学习笔记在CSDN上记录一下&#xff0c;也供有需要的同学参考。 1、电子战定义 电子战&…

Spring Boot与Apache Kafka集成的深度指南

Spring Boot与Apache Kafka集成的深度指南 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代分布式系统中&#xff0c;消息队列的作用愈发重要&#xff0…

【鸿蒙学习笔记】鸿蒙ArkTS学习笔记

应用开发导读&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 【鸿蒙培训】第&#xff11;天・环境安装 【鸿蒙培训】第&#xff12;天・装饰器・组件和页面生命周期 【鸿蒙学习笔记】数据类型 【鸿蒙学习笔记】运算…

Spring Cloud中的服务发现与注册

Spring Cloud中的服务发现与注册 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨Spring Cloud中的服务发现与注册&#xff0c;这是微服务架构中至…

全网最详细的 gin框架请求数据绑定Bind 源码解析 -- 帮助你全面了解gin框架的请求数据绑定原理和方法

在gin框架中&#xff0c;我们可以将多种请求数据&#xff08;json, form,uri&#xff0c;header等&#xff09;直接绑定到我们定义的结构体&#xff0c;底层是通过反射方式获取我们定义在结构体上面的tag来实现请求数据到我们的结构体数据的绑定的。 在gin的底层有2大体系的数据…

Python pip install模块时C++编译环境问题

pip install模块时C编译环境问题 在接触和使用python后&#xff0c;常常会通过pip install命令安装第三方模块&#xff0c;大多数模块可以直接安装&#xff0c;但许多新同学仍会遇见某些模块需要实时编译后才能安装&#xff0c;如报错信息大概是缺乏C编译环境&#xff0c;本文则…

【Elasticsearch】Elasticsearch索引创建与管理详解

文章目录 &#x1f4d1;引言一、Elasticsearch 索引的基础概念二、创建索引2.1 使用默认设置创建索引2.2 自定义设置创建索引2.3 创建索引并设置映射 三、索引模板3.1 创建索引模板3.2 使用索引模板创建索引 四、管理索引4.1 查看索引4.2 更新索引设置4.3 删除索引 五、索引别名…

Go-知识测试-性能测试

Go-知识测试-性能测试 1. 定义2. 例子3. testing.common 测试基础数据4. testing.TB 接口5. 关键函数5.1 testing.runBenchmarks5.2 testing.B.runN5.3 testing.B.StartTimer5.4 testing.B.StopTimer5.5 testing.B.ResetTimer5.6 testing.B.Run5.7 testing.B.run15.8 testing.B…

监听蓝牙对话的BlueSpy技术复现

本文是之前文章的BlueSpy技术的复现过程&#xff1a;https://mp.weixin.qq.com/s/iCeImLLPAwwKH1avLmqEpA 2个月前&#xff0c;网络安全和情报公司Tarlogic在西班牙安全大会RootedCon 2024上提出了一项利用蓝牙漏洞的BlueSpy技术&#xff0c;并在之后发布了一个名为BlueSpy的概…

深度学习之生成对抗网络StyleGAN3

StyleGAN3 是由 NVIDIA 团队提出的第三代生成对抗网络(GAN),在前代 StyleGAN 和 StyleGAN2 的基础上进行了改进,以实现更高质量的图像生成。StyleGAN3 的主要改进在于解决了 StyleGAN2 中存在的伪影(artifacts)问题,并且提升了生成图像的一致性和稳定性。 StyleGAN3 的…

git 提交代码忽略eslint代码检测

在暂存代码的时候会出现以上情况因为在提交代码的时候会默认运行代码进行检测&#xff0c;如果不符合代码规范就会进行报错 解决&#xff1a; 使用 git commit --no-verify -m xxx 忽略eslint的检测

Laravel 谨慎使用Storage::append()

在 driver 为 local 时&#xff0c;Storage::append()在高并发下&#xff0c;会存在丢失数据问题&#xff0c;文件被覆写&#xff0c;而非尾部添加&#xff0c;如果明确是本地文件操作&#xff0c;像日志写入&#xff0c;建议使用 Illuminate\Filesystem\Filesystem或者php原生…

技术成神之路:设计模式(一)单例模式

在软件设计中&#xff0c;有时我们希望某个类的实例始终是唯一的&#xff0c;即无论在何处访问这个类&#xff0c;都能够得到同一个实例。单例模式&#xff08;Singleton Pattern&#xff09;就是为了解决这个问题而产生的。单例模式确保一个类只有一个实例&#xff0c;并提供一…

整合web-socket的常见bug

整合文章连接 此文是记录我上网查找整合方案时候踩的坑,特别是注册失败的问题,比如还有什么去掉Compoent就可以,但是这样这个端点就失效了 特别是报错: at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoint(ServerEndpointExporter.…

大模型日报 2024-06-30

大模型日报 2024-06-30 大模型产品 Briefy: AI知识助手 摘要: Briefy是一款AI知识助手&#xff0c;为专业用户简化每日信息消费&#xff0c;将复杂信息提炼成结构化摘要&#xff0c;组织成知识库&#xff0c;并以自然语言按需检索。 Claude Projects&#xff1a;组织聊天与共享…

邀请函 | 极限科技全新搜索引擎 INFINI Pizza 亮相 2024 可信数据库发展大会!

过去一年&#xff0c;在全球 AI 浪潮和国家数据局成立的推动下&#xff0c;数据库产业变革不断、热闹非凡。2024 年&#xff0c;站在中国数字经济产业升级和数据要素市场化建设的时代交汇点上&#xff0c;“2024 可信数据库发展大会” 将于 2024 年 7 月 16-17 日在北京悠唐皇冠…

肆拾玖坊的商业模式,49坊新零售奖金制度体系,众筹众创+会员制

肆拾玖坊之所以能够在短时间内成为白酒行业的“现象级”企业,,不仅是依靠独特商业模式,同时也依靠的是坚持用户为核心,围绕用户需求,让用户与产品直接产生连接理念。 坐标&#xff1a;厦门&#xff0c;我是易创客肖琳 深耕社交新零售行业10年&#xff0c;主要提供新零售系统工…