发送短信验证码-node+阿里云短信

一、准备工作  

前端:

    表单

    提交方式--- get 、post

        整体提交

        ajax提交

    表单验证

        正则表达式---不轻易自己写正则,不是不写,一定要考虑好兼容性(全面性)---- 提示信息的选择性

    图形验证码

        后端进行提供的一张图片,并且这张图片会对应一个字段,这个字段传递给前端,前端负责校验即可

    短信验证码

        判断是不是手机号

        如果是,那么就发送此手机号給后端,后端继续进行操作

    第三方登录

        qq登录,微信登录,微博登录

        appid appsecret appkey

后端:

    get

        url.parse(req.url, true).query

    post

        req.body

    短信验证

        1、搞定短信包----发送短信

        阿里云短信服务

        https://www.aliyun.com/

 

        短信接口的调用--https://help.aliyun.com/document_detail/57458.html?spm=5176.10629532.106.4.36c21cbe53q1qJ

         秘钥管理页面 -- https://ak-console.aliyun.com/?spm=a2c4g.11186623.2.5.M6srOG#/accesskey

        

    开发:

cnpm i @alicloud/sms-sdk -S

tool/mycode.js  ----  此处代码不要更改,除非你有自己的账号

const SMSClient = require('@alicloud/sms-sdk')

const accessKeyId = 'LTAIZQoVVoPuBjU9'

const secretAccessKey = 'GfJuI2dLsCQh7Q56TmFxPTniXjkVnB'

let smsClient = new SMSClient({accessKeyId, secretAccessKey})

exports.sendCode = function ( options ) {

      smsClient.sendSMS({

        PhoneNumbers: options.phoneNum,

        SignName: '吴勋勋',//按照严格意义来说,此处的签名和模板的ID都是可变的

        TemplateCode: 'SMS_111785721',

        TemplateParam: '{code:'+ options.code +'}'

    }).then(function (res) {

        let {Code}=res

        if (Code === 'OK') {

            //处理返回参数

            // console.log("111111111111111111111")

            options.success('ok')

        }

    }, function (err) {

        console.log(err)

    })

}

需要调用发送短信的地方

users.js

var url = require('url');

var async = require('async');

var { MongoClient } = require('mongodb');

var mongourl = "mongodb://localhost:27017/bk1803";

var { sendCode } = require('./mycode.js')

module.exports = {

    defaultRoute: ( req, res, next ) => {

     res.render('users');

    },

  getPhoneCode( req, res, next ){

    var { phoneNum } = url.parse( req.url, true ).query;

    async.waterfall( [

      ( cb ) => {

        MongoClient.connect( mongourl, ( err, db ) => {

          if ( err ) throw err;

          cb( null, db);

        })

      },

      ( db, cb ) => {

        db.collection('users').find({phoneNum},{_id:0}).toArray( ( err, res ) => {

          if ( err ) throw err;

          if( res.length == 0 ) {

            cb( null, 1);

          }else {

            cb( null, 0);

          }

          db.close();

        })

      }

    ], ( err, result ) => {

      if ( err ) throw err;

      if( result == 1) {

        sendCode({

          phoneNum,

          code:'3456',

          success:function(data){

            if(data == "ok"){

              res.send("1")

            }

          }

        })

      }else{

        res.send("0")

      }

    })

    

  },

  registerUserAction( req, res, next ){

    var { phoneNum, password } = req.body;

    async.waterfall( [

        ( cb ) => {

            MongoClient.connect( mongourl, ( err, db ) => {

                if ( err ) throw err;

                cb( null, db);

            })

        },

        ( db, cb ) => {

            db.collection('users').insert({phoneNum, password}, ( err, res ) =>{

          if ( err ) throw err;

          cb( null, 'ok');

          db.close()

        })

        }

    ], ( err, result ) => {

      if ( err ) throw err;

       if ( result == "ok" ){

         res.send("1")

       }else{

         res.send("0")

       }

    })

  }

}

posted @ 2019-04-06 16:46  格尔尼卡ぃ  阅读(653)  评论(1编辑  收藏  举报