目前比较流行的登录方式就是短信验证码登录,但是这种方式是需要借助第三方短信提供商(即为付费的官方接口),其实现流程如下:


具体实现如下 :

//使用前需要先下载包
let md5 = require('blueimp-md5');
let moment = require('moment');
let Base64 = require('js-base64').Base64;
let request = require('request');/*生成指定长度的随机数*/
function randomCode(length) {let chars = ['0','1','2','3','4','5','6','7','8','9'];let result = ""; for(let i = 0; i < length ; i ++) {let index = Math.ceil(Math.random()*9);result += chars[index];}return result;
}
exports.randomCode = randomCode;/*向指定号码发送指定验证码*/
function sendCode(phone, code, callback) {let ACCOUNT_SID = '8aaf070855b647ab0155b9f80994058a';let AUTH_TOKEN = 'aa8aa679414e49df8908ea5b3d043c24';let Rest_URL = 'https://app.cloopen.com:8883';let AppID = '8aaf070855b647ab0155b9f809f90590';//1. 准备请求url/*1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:201404161420302.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG*/let sigParameter = '';let time = moment().format('YYYYMMDDHHmmss');sigParameter = md5(ACCOUNT_SID+AUTH_TOKEN+time);let url = Rest_URL+'/2013-12-26/Accounts/'+ACCOUNT_SID+'/SMS/TemplateSMS?sig='+sigParameter;//2. 准备请求体let body = {to : phone,appId : AppID,templateId : '1',"datas":[code,"1"]}//3. 准备请求头/*a.使用Base64编码(账户Id + 冒号 + 时间戳)其中账户Id根据url的验证级别对应主账户b.冒号为英文冒号c.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。*/let authorization = ACCOUNT_SID + ':' + time;authorization = Base64.encode(authorization);let headers = {'Accept' :'application/json','Content-Type' :'application/json;charset=utf-8','Content-Length': JSON.stringify(body).length+'','Authorization' : authorization}//4. 发送请求, 并得到返回的结果, 调用callbackrequest({method : 'POST',url : url,headers : headers,body : body,json : true}, function (error, response, body) {console.log(error, response, body);callback(body.statusCode==='000000');});
}
exports.sendCode = sendCode;/*
//使用方式:
sendCode('18912989092', randomCode(6), function (success) {console.log(success);
})
*//*注意:必须是短信提供商提供的标准的,即第三方付过费用的官方接口,才可使用。
*/

用户登录短信验证码的实现相关推荐

  1. Jmeter-函数助手-随机函数的使用(模拟1000+个手机用户获取短信验证码)

    如何模拟1000个手机用户登录? 现在很多APP或者网站都需要使用手机号进行登录,那么使用手机号进行登录时,必然就需要"手机号+短信验证码"才可登录成功. 在实际测试过程中,测试人 ...

  2. 网站app注册登录短信验证码是怎么获取实现的

    在我们的生活中,经常会遇到(www.yunxintong100.com)需要手机注册,手机验证,手机修改密码的时候,而这些操作都会收到手机验证码来进行身份验证,这样做的目的不仅是为了保护用户的安全使用 ...

  3. php 短信验证登录,短信验证码注册登录的实现,php接入的3种方法(附示例)

    上周,有朋友需要帮忙做一个关于手机短信验证码注册登录的功能,之前没有做过,于是我查查资料,汇总出PHP接入短信验证码的3种方法,现在和大家分享: 1.cURL $curl = curl_init(); ...

  4. java web项目登录短信验证码_如何在Web项目完成短信验证码

    在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 短信验证码实现流程 1.构造手机验证码:使用random对象生 ...

  5. 向用户发送短信验证码

    public static string SendMessage(string phonenum, string code)         {             String encode = ...

  6. java秒滴短信验证接入_(秒嘀)登录短信验证码开发 Demo

    注意:前提你要在秒嘀注册:http://www.miaodiyun.com/doc/demo.html 配置类   package com.miaodiyun.httpApiDemo.common; ...

  7. Spring Security OAuth2 优雅的集成短信验证码登录以及第三方登录

    基于SpringCloud做微服务架构分布式系统时,OAuth2.0作为认证的业内标准,Spring Security OAuth2也提供了全套的解决方案来支持在Spring Cloud/Spring ...

  8. 2.vue3医疗在线问诊项目 - _登录模块 ==> 代码片段、css变量主题定制、cp-nav-bar组件封装、svg打包精灵图插件、cp-icon组件封装、表单校验、密码登录、短信验证码登录及两者

    2.医疗在线问诊项目 - _登录模块 ==> 代码片段.css变量主题定制.cp-nav-bar组件封装.svg打包精灵图插件.cp-icon组件封装.表单校验.密码登录.短信验证码登录及两者的 ...

  9. 短信验证码测试——短信轰炸之横向轰炸和纵向轰炸

    短信轰炸也分为水平轰炸和垂直轰炸.按字面意思猜一下,就像这样.据我所知,目前还有很多短信接口可以被水平轰炸,尤其是在网页中,没有对短信接口做一些必要的限制,导致无限呼叫和滥用的存在. 因为手机号码格式 ...

最新文章

  1. python-docx官方声明
  2. 【2021Java最新学习路线】kvm和docker区别
  3. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
  4. cmake (4)引用子目录的库
  5. echarts无数据时显示无数据_钣金无腻子数据还原
  6. Win10重装系统后更改用户文件夹名称的方法
  7. python有内存处理模块吗_使用Python多处理的高内存使用
  8. python画一颗心_利用python画一颗心的方法示例
  9. Qt Creator使用灯光
  10. SQL Server 连接超时案例一则
  11. LeetCode 392. 判断子序列(双指针二分查找)
  12. 细述 wxWindows
  13. JSESSIONID 作用
  14. 理财新技巧之一 玩转国债和企业债回购
  15. Excel中常用技巧
  16. 如何修改微信公众号内部网页的头部标签内容
  17. Docker深入浅出系列 | 容器初体验
  18. 现在学java好还是python好,java好学还是python好学
  19. H5页面展示丨网页三维展示丨产品3D展示原理【商迪3D】
  20. android10获取手机号码,【android,10】10.调用web服务获取手机号码归属地

热门文章

  1. 推荐一款过滤百度广告的神器
  2. hive 中创建表的三种方式
  3. 基于STM32的万能红外遥控器
  4. Element-UI安装与使用
  5. Dynamics 365 for Phone 使用Xrm.Device.captureImage获取照片
  6. Xcode8使用出现bundleid: com.xxx.xxx, enable_level: 0, persist_level: 0, propagate_with_acti
  7. ROS2极简总结-Nav2-行为树
  8. yum完全配置及createrepo详解
  9. 原生Js放大镜实例(附图附讲解可直接复制研究使用,小白福利)
  10. MySQL精简版安装教程