当前位置 博文首页 > Jet_Lover的博客:Node.js之发送手机验证码简易版功能实现

    Jet_Lover的博客:Node.js之发送手机验证码简易版功能实现

    作者:[db:作者] 时间:2021-07-05 13:09

    先看成果在这里插入图片描述这里已经成功了。

    接下来先是主页部分

    <form id="myform">
        请输入手机号: <input type="text" id="phoneNum" name="phone">
        <button type="button" onclick="sendCode()">获取验证码</button>
        <br>
        验证码: <input type="text" id="code" name="code">
        <br>
        <input type="file" name="myfile">
        <br>
        <button type="button" onclick="verifyCode()">登录</button>
    </form>
    

    JS代码

        function sendCode() {
            let phoneNum = $('#phoneNum').val()
            // 这里正则验证手机格式
            $.ajax({
                url:'/sendCode',
                data:{phoneNum},
                type:'post',
                success(respData){
                    // 1.验证码发送成功
                    respData.data ? alert('验证码已经发送') : alert('手机填写错误')// 2.验证码发送失败
                    console.log(respData)
                }
            })
        }
        function verifyCode() {
            let phone = $('#phoneNum').val()
            let code = $('#code').val()
            $.ajax({
                url:'/verifyCode',    
                type:'post',
                data:{phone,code},
                // processData: false,   // jQuery不要去处理发送的数据
                // contentType: false,   // jQuery不要去设置Content-Type请求头
                success(respData){
                    console.log(respData)
                    if(respData.data ){
                        alert('登录成功')
                        location.href = 'index.html'
                    }else {
                        alert('登录失败')
                        console.log(respData.yuanyin)
                    }
                }
            })
        }
    

    关于CSS样式每个人有不同的风格这里就不写了
    接下来是链接接口app.js ,需下载的包都写在了后面

    const express = require('express')         //服务器  npm install express -D
    const favicon = require('serve-favicon')   // 小图标 npm install serve-favicon -D
    const logger = require('morgan')           // 日志 npm install morgan -D
    const bodyParser = require('body-parser')  //  npm install body-parser -D
    const smsRouter = require('./router/smsRouter')    //路由文件下的名字
    let session = require(`express-session`)   //npm install express-session -D
    const  myapp=express()
    // //配置日志
    myapp.use(logger('dev'))
    myapp.use(session({
        name:'yang',
        secret:'123',
        cookie:{maxAge:600000},
        saveUninitialized:true,
        resave:true,
        rolling:true
    }))
    
    //配置服务器对象的post解析
    myapp.use(bodyParser.urlencoded({extended:false}))
    myapp.use(bodyParser.json())
    
    // 服务器对象配置路由
    myapp.use(smsRouter)
    
    
    // 路由之后静态资源之前配置ejs
    myapp.set('view',`${__dirname}/src/view`)
    myapp.set(`view engine`,`ejs`)//需要告诉express那个写文件是ejs
    
    //配置express的静态资源文件路径
    myapp.use(express.static(__dirname+'/src')) //所有静态资源都到src里面去找
    myapp.use(favicon(__dirname+'/src/images/p1.jpg'))  //小图标
    
    myapp.listen(8888,()=>{
        console.log ("这是我的第十个服务器")
    })
    

    接下来是配置路由

    const EXPRESS = require(`express`)
    let smsCtrl = require('../controller/smsCtrl')
    
    const ROUTER = EXPRESS.Router()
    
    ROUTER.post('/sendCode',smsCtrl.send)
    ROUTER.post('/verifyCode',smsCtrl.verify)
    
    
    
    
    module.exports = ROUTER
    

    配置controller

    let sms = require('leancloud-storage')
    
    sms.init({
        appId:'???',
        appKey:'???',
        serverURLs:'???'
    })   //这些在官网leanCloud里面能找到,具体位置看下面的图片
    module.exports={
        send(req,resp){
            let {phoneNum} = req.body;
            console.log(phoneNum)
            sms.Cloud.requestSmsCode({
                mobilePhoneNumber:phoneNum, //预设手机号,默认为手动输入
                name:'我爱你',//自己设置
                code:'验证码',
                ttl:1,//有效时间为一分钟
                sing:'web'
            }).then(res=>{
                resp.send({
                    code:200,
                    data:true
                })
            }).catch(err=>{
                console.log(err)
                resp.send({
                    code:400,
                    data:false
                })
            })
        },
        verify(req,resp){
            console.log(req.body)
            let {phone,code} = req.body
            sms.Cloud.verifySmsCode(code,phone).then(res=>{//匹配
                resp.send({
                    code:200,
                    data:true
                })
            }).catch(err=>{//不匹配
                resp.send({
                    code:400,
                    data:false,
                    yuanyin:err
                })
            })
        }
    }
    

    在这里插入图片描述
    到这里功能基本上就能实现了,对了为了方便我还加了个上传功能,当然如果你不想使用也可以删掉,然后关于 一点特别重要一定要勾上看下图:
    在这里插入图片描述

    cs