摘要:开发中使用容联云通信获取短信验证码的接口注册账号,注册后送元,开发试用可以用很久了。在测试号码中绑定测试手机号码,只有这个号码能接收验证短信。其中账户和账户授权令牌根据的验证级别对应主账户。
开发中使用 【容联 云通信】获取短信验证码的 Javascript 接口
注册账号:https://www.yuntongxun.com/,注册后送8元,开发试用可以用很久了。
在平台应用列表添加应用。
在测试号码中绑定测试手机号码,只有这个号码能接收验证短信。
在项目中绑定配置:将控制台首页的开发者主账号信息粘贴复制进下列接口代码的相应位置。
一个前后台分离的应用,在后台项目目录下建立 util文件夹,建立util/sms_util.js文件,文件内写使用 【容联 云通信】平台获取短信验证码的 Javascript 接口代码:
// 容联云通信 短信验证码接口
var md5 = require("blueimp-md5")
var moment = require("moment")
var Base64 = require("js-base64").Base64;
var request = require("request");
/*
生成指定长度的随机数
*/
function randomCode(length) {
var chars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
var result = ""; //统一改名: alt + shift + R
for (var i = 0; i < length; i++) {
var index = Math.ceil(Math.random() * 9);
result += chars[index];
}
return result;
}
// console.log(randomCode(6));
exports.randomCode = randomCode;
/*
向指定号码发送指定验证码
*/
// 将控制台首页的开发者主账号信息粘贴复制进下列接口代码的相应位置
function sendCode(phone, code, callback) {
var ACCOUNT_SID = "";
var AUTH_TOKEN = "";
var Rest_URL = "";
var AppID = "";
//1. 准备请求url
/*
1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。
时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:20140416142030
2.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG
*/
var sigParameter = "";
var time = moment().format("YYYYMMDDHHmmss");
sigParameter = md5(ACCOUNT_SID + AUTH_TOKEN + time);
var url = Rest_URL + "/2019-6-16/Accounts/" + ACCOUNT_SID + "/SMS/TemplateSMS?sig=" + sigParameter;
//2. 准备请求体
var body = {
to: phone,
appId: AppID,
templateId: "1",
"datas": [code, "1"]
}
//body = JSON.stringify(body);
//3. 准备请求头
/*
1.使用Base64编码(账户Id + 冒号 + 时间戳)其中账户Id根据url的验证级别对应主账户
2.冒号为英文冒号
3.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。
*/
var authorization = ACCOUNT_SID + ":" + time;
authorization = Base64.encode(authorization);
var headers = {
"Accept": "application/json",
"Content-Type": "application/json;charset=utf-8",
"Content-Length": JSON.stringify(body).length + "",
"Authorization": authorization
}
//4. 发送请求, 并得到返回的结果, 调用callback
// callback(true);
request({
method: "POST",
url: url,
headers: headers,
body: body,
json: true
}, function (error, response, body) {
console.log(error, response, body);
callback(body.statusCode === "000000");
// callback(true);
});
}
exports.sendCode = sendCode;
/*
sendCode("13716962779", randomCode(6), function (success) {
console.log(success);
})*/
5.在后台路由文件/routes/index.js中引入,使用:
const sms_util = require("../util/sms_util")
/*
发送验证码短信
*/
router.get("/sendcode", function (req, res, next) {
//1. 获取请求参数数据
var phone = req.query.phone;
//2. 处理数据
//生成验证码(6位随机数)
var code = sms_util.randomCode(6);
//发送给指定的手机号
console.log(`向${phone}发送验证码短信: ${code}`);
sms_util.sendCode(phone, code, function (success) {//success表示是否成功
if (success) {
users[phone] = code
console.log("保存验证码: ", phone, code)
res.send({"code": 0})
} else {
//3. 返回响应数据
res.send({"code": 1, msg: "短信验证码发送失败"})
}
})
})
6.在前台应用中输入绑定的测试手机号,发送验证码。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104787.html
由于前段时间自己在多个项目里都有发送短信的需求,导致我需要在每个项目里面重复写短信发送,发送结果管理,以及验证码校验等功能。 所以萌生了要为laravel量身打造一个综合性的短信发送包。该包初步构想的是能支持多种第三方服务商(如云片,云通讯,Luosimao等),并集成短信发送以及验证码短信发送/校验模块。 后来在phphub上看到有人提出如果短信发送不成功或者被审核了, 调用另一个服务商的来...
摘要:登录注册安全风险登录注册的风险点主要有四个暴力破解撞库遍历注册用户批量注册。引入了验证码机制同样引入了额外的安全风险,比如短信验证码的短信炸弹风险图形验证码的可绕过可识别等。 概述 很多技术研发不了解安全,也不重视安全,只有在自己的服务器被黑掉、被挂马、被脱裤才想起关注安全,但是这个时候,技术架构已经成型、代码已经在线上稳定运行,再亡羊补牢,改代码、改策略,往往成本巨大、确收效很低。所...
摘要:在次失败后,第四次请求,就返回错误文案验证码连续错误三次,请重新获取短信验证码还有一个需要思考的维度。一般来说,短信验证码会有分钟的有效期。 前言: 现如今登录用手机验证码登录是越来越常见了。虽然会增加成本,不过对用户体验的提升还是很有帮助的。那么,当产品经理对开发说,来按照这个原型给我搞个短信验证码登录的时候。我们作为研发,应该想些什么?showImg(https://upload-...
阅读 1461·2021-11-15 11:37
阅读 3665·2021-11-11 16:55
阅读 1963·2021-08-25 09:39
阅读 3367·2019-08-30 15:44
阅读 1914·2019-08-29 12:52
阅读 1544·2019-08-29 11:10
阅读 3418·2019-08-26 11:32
阅读 3340·2019-08-26 10:16