node.js实现阿里云配置发送短信验证码

简介: node.js实现阿里云配置发送短信验证码

这段时间在自己准备做一个博客系统,在写登录页面的时候突然想到除了正常账号密码登录和其他第三方登录之后,在加一个手机号登录岂不是更好。说干就干,于是就是阿里云上找了一下关于短信的服务,看了一下还是比较符合我们的需求,于是就决定使用阿里云,


开始


首先项目开始我们需要配置我们的短信服务,进入阿里云搜索我们的短信服务 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台


然后第一步就需要找到我们的国内信息


签名添加

eed81a4d0b684e8f9e8fe5b57a0888b5.png


第一次使用的小伙伴需要新添加我们的签名,这里添加比较严格,小伙伴如果添加失败可以多试几次,


模板添加


签名添加好了之后然后需要添加我们的模板管理


5061117bbbb24f48a4cea37837973356.png


测试短信


这里我们的签名和模板都添加成功之后我们就可以测试一下短信是否可以正常发送了,


0f808a96ee5c4312b2af657d129c4802.png


这里填写信息然后点击测试


c8ae563228dd410ba394303696599522.png


可以拿到


28543e1148bd45d080675d4863e8eaba.png


然后就可以接收到短信


8f4d7a48912a45aca0f4440e3ac92792.jpg


项目中使用


首先我们新建一个node项目


首先使用npm init初始化项目 然后依次下载 koa2 nodemon  koa2-cors koa-bodyparser koa-router


然后运行项目


6e6330bce68b44298c25e88ccda5d682.png


然后我们需要下载


yarn add @alicloud/pop-core


下载之后直接先复制到我们的项目中post请求里面


f6f7f5adcd944d6390bea04be7780032.png


然后我们这里来一点点完善代码


Core


首先看文档可以看出我们的new Core


accessKeyId | accessKeySecret


首先就是我们的accessKeyId


我们的accessKeyId和accessKeySecret一样都需要我们自己在阿里云进行创建


82489619d03447819ca04525b49d5fbc.png


然后这里的AccessKey ID和AccessKey Secret就分别是我们的accessKeyId和accessKeySecret了


d8f246278c594e459a2b35d92cafdc5f.png


后面几个参数就可以直接使用就可以了


accessKeyId: '<your-access-key-id>',
accessKeySecret: '<your-access-key-secret>',
// securityToken: '<your-sts-token>', // use STS Token
endpoint: 'https://dysmsapi.aliyuncs.com',
apiVersion: '2017-05-25'


params


到我们的params,就是我们在页面上使用的一些信息,比如电话号码,短信内容之类的,这里我们电话和短信内容肯定不能写死的,这里需要做一下特殊的处理


PhoneNumbers


首先是我们的电话号码,我们需要前台传递给我们,我们可以通过 ctx.request.body.phone


来获取电话号码,


SignName

SignName就是我们前面的标题,告诉你是谁谁谁给你发的这个短信。


TemplateCode


TemplateCode就是我们添加的模板,需要我们自己提前增加


d9042011a6684779ad9c40f4bc2bf96f.png


TemplateParam


最后一个TemplateParam就是我们的验证码信息了,这里肯定不能写死,我们这里写一个函数来随机获取然后将数据赋值


// 随机验证码
function ran(num) {
    let code = "";
    for (let i = 0; i < num; i++) {
        let radom = Math.floor(Math.random() * 10);
        code += radom
    }
    return {
        "code": code
    }
}
const randCode = ran(6);


然后我们的数据需要值转换为 JSON 字符串 的格式传递


最后我们的client.request可以改成我们习惯的async awati的新式,


外层使用try catch来捕获错误

    try {
        const response = await client.request('SendSms', params, requestOption)
        console.log('response', response)
        if (response.Code === 'OK') {
            ctx.body = {
                code: '200',
                message: '发送成功'
            }
        } else {
            ctx.body = {
                code: '400',
                message: '发送失败'
            }
        }
    } catch (error) {
        console.log('error', error)
    }

 

前台代码


因为我们主要是测试发送短信的处理,前台就不做过多讲解,这里直接使用原生html请求axios


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <input class="input" type="text" placeholder="请输入电话号码"> 
    <button id="btn">验证</button>
</body>
<script>
   let val= document.querySelector('.input')
   document.querySelector("#btn").addEventListener("click",function (params) {
        console.log(val.value)
            var url = "http://localhost:3001/note";
            var paramsdataa = {phone:val.value};
            axios({
                url:url,
                method:'POST',
                data:paramsdataa
            }).then(function (res) {
                console.log(res.data);
            });
        });
</script>
</html>


接着发送请求


这里首先我们的前台已经请求成功了,也拿到请求成功的回调

0603af7e5355424fb0848bb842d782dd.png


然后就是我们的手机上也获取到了验证信息,


594c89dee4ff42a6a8bcf1b414c847ba.png


后续我们就可以将用户输入的验证码跟我们生成的验证码信息相匹配,如果匹配成功就可以继续自己需要的操作。


4.结束


到这里我们的node.js实现阿里云配置发送短信验证码就已经结束了,


完整的代码我放github上了需要的可以自取


https://github.com/cqxzq/note


如果你觉得这篇文章对您有帮助就三连支持一下呗。


相关文章
|
21天前
|
数据采集 监控 安全
阿里云短信服务+图形认证,有效降低验证码盗刷概率
阿里云短信服务+图形认证服务,有效降低验证码盗刷概率。
阿里云短信服务+图形认证,有效降低验证码盗刷概率
|
1月前
|
JavaScript
Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
这篇文章介绍了Nest.js服务在应用程序引导过程中,TypeScript编译对效率的影响,以及如何通过使用webpackHMR来降低应用实例化的时间。文章包含具体教程,指导读者如何在项目中安装依赖包,并在根目录下新增webpack配置文件webpack-hmr.config.js来调整HMR相关的配置。最后,文章总结了如何通过自定义webpack配置来更好地控制HMR行为。
|
11天前
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
14 0
Vue3基础(19)___vite.config.js中配置路径别名
|
11天前
|
存储 JSON 前端开发
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
20 0
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
|
11天前
|
前端开发 JavaScript 安全
node登陆接口权限配置cookie-parser、express-session
本文介绍了在Node.js中使用express-session和cookie-parser实现登录接口的权限配置,包括验证码接口的生成和自定义中间件的创建,用于验证用户权限。
12 0
node登陆接口权限配置cookie-parser、express-session
|
11天前
|
JavaScript 应用服务中间件 Linux
宝塔面板部署Vue项目、服务端Node___配置域名
本文介绍了如何使用宝塔面板在阿里云服务器上部署Vue项目和Node服务端项目,并配置域名。文章详细解释了安装宝塔面板、上传项目文件、使用pm2启动Node项目、Vue项目打包上传、以及通过Nginx配置域名和反向代理的步骤。
25 0
宝塔面板部署Vue项目、服务端Node___配置域名
|
2月前
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
2月前
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录
|
21天前
|
存储 NoSQL Java
|
2月前
|
JSON 前端开发 JavaScript
vue.config.js配置详解
【8月更文挑战第16天】vue.config.js配置详解
31 1
vue.config.js配置详解
下一篇
无影云桌面