vue实现短信验证码登录功能(流程详解)


Posted in Javascript onDecember 10, 2019

无论是移动端还是pc端登录或者注册界面都会见到手机验证码登录这个功能,输入手机号,得到验证码,最后先服务器发送请求,保存登录的信息,一个必不可少的功能

思路

1,先判断手机号和验证是否为空,

2,点击发送验证码,得到验证码

3,输入的验证码是否为空和是否正确,

4,最后向服务发送请求

vue实现短信验证码登录功能(流程详解)vue实现短信验证码登录功能(流程详解)

界面展示

1.准备工作

这个会对input进行封装处理

<template>
 <div class="text_group">
  <div class="input_group" :class="{'is-invalid': error}">
   <!-- 输入框 -->
   <input 
    :type="type"
    :placeholder="placeholder"
    :value="value"
    :name="name"
    @input="$emit('input',$event.target.value)"
   >
   <!-- 输入框后面的内容 -->
   <button v-if="btnTitle" @click="$emit('btnClick')" :disabled="disabled">{{btnTitle}}</button>
  </div>
  <!-- 验证提示 -->
  <div v-if="error" class="invalid-feedback">{{error}}</div>
 </div>
</template>
<script>
 export default {
  name:"inputGroup",
  props:{
   type: {
    type: String,
    default: "text"
   },
   placeholder:String,
   value:String,
   name:String,
   disabled:Boolean,
   btnTitle:String, //input框中的文字
   error:String //验证不正确提示
  }
 }
</script>

input组件封装完之后在我们这个login组件中引入并注册

import InputGroup from '../components/InputGroup'引入封装的组件

最后在components注册

data() {
 return {
  phone:"", //手机号
  verifyCode:"", //验证码
  btnTitle:"获取验证码",
  disabled:false, //是否可点击
  errors:{}, //验证提示信息
 }
 }

<template>
 <div class="login">
  <!-- 手机号 -->
  <InputGroup
   type="number"
   placeholder="手机号"
   v-model="phone" 
   :btnTitle="btnTitle"
   :disabled="disabled"
   :error="errors.phone"
   @btnClick="getVerifyCode"
  />
  <!-- 输入验证码 -->
  <InputGroup
   type="number"
   v-model="verifyCode"
   placeholder="验证码"
   :error="errors.code"
  />
  <!-- 登录按钮 -->
 



 <div class="login_btn">
   <button @click="handleLogin" :disabled="isClick">登录</button>
  </div>
 </div>
 </template>

2.判断手机号是否正确和合法

(1)点击验证码发送验证的时候,必须符合手机号正确和手机号码不能为空,短信发送服务用的是《聚合数据》,申请可以免费调用10次

getVerifyCode(){

//获取验证码
if(this.validatePhone()) {
 this.validateBtn()
 //发送网络请求
 this.$axios.post('/api/posts/sms_send',{<br>


//注册聚合数据找到短信api服务,申请会得到两个tpl_id和key值,然后填入相对应的就行,具体还是和你门后端进行沟通
  tpl_id: "",
    key: "",
  phone:this.phone
 }).then(res => {
  console.log(res)
 })
 }<br>},

2.1点击发送验证码的时候判断是否合法

validatePhone(){
 //判断输入的手机号是否合法
 if(!this.phone) {
 this.errors = {
 phone:"手机号码不能为空"
 }
 // return false
 } else if(!/^1[345678]\d{9}$/.test(this.phone)) {
 this.errors = {
 phone:"请输入正确是手机号"
 }
 // return false
 } else {
 this.errors ={}
 return true
 }
},

2.2点击验证码发送倒计时

validateBtn(){
 //倒计时
 let time = 60;
 let timer = setInterval(() => {
 if(time == 0) {
 clearInterval(timer);
 this.disabled = false;
 this.btnTitle = "获取验证码";
 } else {
 this.btnTitle =time + '秒后重试';
 this.disabled = true;
 time--
 }
 },1000)
},

3.点击登录实现

3.1点击登录之前手机已经发送验证密,并且手机上以及获取到正确的验证码,登录之前需要判断,手机号和验证码都不能为空,所以在计算属性判断是否两个都为空,如果都不为空的话,可以点击按钮,否则不能点击按钮

computed: {
 //手机号和验证码都不能为空
 isClick(){
  if(!this.phone || !this.verifyCode) {
  return true
  } else {
  return false
  }
     
 }
},

3.2点击登录发送请求,得到的并存储到localStorage里面,最后跳转到登录页面

handleLogin() {
 //点击发送
 this.errors = {};
 this.$axios.post('/api/posts/sms_back',{
  phone:this.phone,
  code:this.verifyCode
 }).then(res => {
  console.log(res);
  localStorage.setItem('ele_login',true)
  this.$router.push('/')
 }).catch(error =>{
  //返回错误信息
  this.errors ={
  code:error.response.data.msg
 }
 })
}

总结

以上所述是小编给大家介绍的vue实现短信验证码登录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
getElementById在任意一款浏览器中都可以用吗的疑问回复
May 13 Javascript
js取滚动条的尺寸的函数代码
Nov 30 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
Jul 09 Javascript
js网页右下角提示框实例
Oct 14 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 Javascript
理解Javascript的call、apply
Dec 16 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
JS中Array数组学习总结
Jan 18 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
Nov 09 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 #Javascript
使用Bootstrap做一个朝代历史表
Dec 10 #Javascript
JS实现拼图游戏
Jan 29 #Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 #Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
Dec 09 #Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 #Javascript
js刷新页面location.reload()用法详解
Dec 09 #Javascript
You might like
实用函数8
2007/11/08 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
js数组Array sort方法使用深入分析
2013/02/21 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
python添加模块搜索路径和包的导入方法
2019/01/19 Python
对python函数签名的方法详解
2019/01/22 Python
python实现计算器功能
2019/10/31 Python
使用Python实现批量ping操作方法
2020/05/06 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
少先队学雷锋活动月总结
2014/03/09 职场文书
公司贷款承诺书
2014/05/30 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
临床医学专业求职信
2014/08/08 职场文书
走群众路线学习笔记
2014/11/06 职场文书
长城导游词300字
2015/01/30 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
frg-100简单操作(设置)说明
2022/04/05 无线电