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 相关文章推荐
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
javascript生成随机数的方法
May 16 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
js实现5秒倒计时重新发送短信功能
Feb 05 Javascript
深入学习JavaScript中的bom
May 27 Javascript
微信小程序自定义波浪组件使用方法详解
Sep 21 Javascript
微信小程序事件流原理解析
Nov 27 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 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
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python字典一键多值实例代码分享
2019/06/14 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
Python帮你识破双11的套路
2019/11/11 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
python在协程中增加任务实例操作
2021/02/28 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
物业管理个人自我评价
2013/11/08 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
作风转变心得体会
2014/09/02 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
追悼会答谢词
2015/01/05 职场文书
现货白银电话营销话术
2015/05/29 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技