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 相关文章推荐
JavaScript 页面编码与浏览器类型判断代码
Jun 03 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
JavaScript也谈内存优化
Jun 06 Javascript
简介BootStrap model弹出框的使用
Apr 27 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
Bootstrap Table 删除和批量删除
Sep 22 Javascript
js读取本地文件的实例
Dec 22 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
对vue 键盘回车事件的实例讲解
Aug 25 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 Javascript
JavaScript仿京东轮播图效果
Feb 25 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
php随机生成数字字母组合的方法
2015/03/18 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
python正则表达式的使用
2017/06/12 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
通过cmd进入python的步骤
2020/06/16 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
升学宴演讲稿
2014/09/01 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
入党申请书怎么写?
2019/06/11 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
Java输出Hello World完美过程解析
2021/06/13 Java/Android
微信小程序调用python模型
2022/04/21 Python
python运行脚本文件的三种方法实例
2022/06/25 Python
基于Redission的分布式锁实战
2022/08/14 Redis