阿里大于实现短信验证码node.js(最新版)

阿里大于账号的申请和短信签名、短信模板的申请,在此不再赘述。
本文主要介绍的是在nodejs上的代码实现。
要点:

  • 安装npm包
  • SDK的引用
  • 验证码生成后和前端的匹配
  • 验证码格式

1.除了正常开发需要安装的npm包之外,关于阿里大于的只需要安装一个,原因是阿里大于和阿里云合并了

$ npm install --save @alicloud/sms-sdk

2.首先是sdk的引用,在阿里大于官网上找到nodejs版本的sdk包后直接下载,是一个压缩包,解压缩后,文件结构如下:
这里写图片描述
然后将其中的lib文件夹和index.js文件复制粘贴到自己项目的js文件夹中。
然后在main.js(或app.js)中添加如下代码:

//index.js就是sdk中的index.js
ApiClient = require('./www/js/index.js').ApiClient; 
app.post('前端发送的请求',function(req,res){
    var form = new formidable.IncomingForm();
    form.parse(req , function(err , fields){
        //获得要发送的电话号码
        var phoneNumber = fields.phoneNumber; 
        //随机的4位数验证码,code是个全局变量,方便下方另一个请求中的验证
        code = parseInt(Math.random()*9000+1000).toString();
        //发送短信的语句,具体参数看官网api
        const client = new ApiClient({
            'appkey': '你的appkey',
            'appsecret': '你的appsecret',
            'REST_URL': 'http://gw.api.taobao.com/router/rest'
        });
        client.execute('alibaba.aliqin.fc.sms.num.send', {
            'sms_type':'normal',
            'sms_free_sign_name':'你的name',
            'sms_param':'{\"code\":\"'+ code +'\",\"product\":\"你要填的内容\"}',
            'rec_num':phoneNumber,
            'sms_template_code':'你的模板'
        }, function(error, response) {
            if (!error) {
                console.log(response);
            }else{
                console.log(error);
            } 
        });
    })
})

3.验证码和前端输入的验证
在前端输入收到的短信验证码后。点击登录或者注册或者….等按钮时,再次发送请求。传递输入的验证码等信息,和之前的code对比,代码如下

app.post("你的请求",function(req,res){
    var form = new formidable.IncomingForm();
    form.parse(req , function(err , fields){
        //输入的短信验证码
        var msgcode = fields.msgcode;
        //进行验证判断
        if(msgcode == code){
            do something...
        }else{
            res.send("errormsg");
        }
    });

上述代码的结尾,如果验证码错误就会输出一条信息,没错就不输出信息,可以在前端接收,如果有信息输出,就弹出错误,否则do something…
前端验证部分代码:

$.post("你的请求",{    
                    //参数是输入的短信验证码           
                    "msgcode":$("#dxyzm").val()
                },function(data){
                //此处的data就是node端send的内容
                    if(data){
                        alert("短信验证码错误");
                    }else{
                        //没错的话
                        do something...
                    }
                });

4.验证码格式问题
在发送短信验证码部分的代码有一个属性是:

'sms_param':'{\"code\":\"'+ code +'\",\"product\":\"你的内容\"}'

注意不要省略 \ 转义,写成:

'sms_param':'{"code":"'+ code +'","product":"你的内容"}'

写成这样的话。逻辑上不会有错误,判定依然可以正确执行,但是用户收到的验证码会有小数点。比如你生成的code是 2234 ,用户收到的就是 2234.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值