【短信验证码登录】

短信验证码登录

1.页面如下
在这里插入图片描述

html如下

 <el-form-item  label="手机号"  prop="phone">
    <div class="phone-box">
     <!--手机号码限制长度11位,输入时checkPhone判断是否为数值(不允许输入数值意外的值)  -->
     <el-input   @input="checkPhone"   v-model="contactsInfo.phone"  :maxlength="11" />
      <!--  根据setTime判断显示倒计时还是“获取验证码”  countDown:验证码倒计时-->
     <el-button   v-if="setTime"   type="primary"  size="small"   style="margin-left:10px;width: 100px;" disabled>{{countDown}}</el-button>
     <el-button  v-else  type="primary"  size="small"  style="margin-left:10px;"  @click="getCode">获取验证码</el-button>
   </div>
 </el-form-item>
 <el-form-item   label="验证码"   prop="code">
    <el-input v-model="contactsInfo.code" />
 </el-form-item>

data如下

data() {
	//验证电话号码格式是否正确
	const validatePhone = (rule, value, callback) => {
      const e = this.contactsInfo.phone.match(
        /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/
      )
      if (!e) {
        callback(new Error('请输入正确的联系方式'))
      } else {
        callback()
      }
    }
	return {
		 contactsInfo: {
	        name: '',
	        phone: '',
	        code: '',
	        key: null
	      },
	      countDown: 60,
	      setTime: false,
	      rules: {
	        name: [
	          { required: true, message: '请输入联系人名称', trigger: 'blur' }
	        ],
	        phone: [{ required: true, validator: validatePhone, trigger: 'blur' }],
	        code: [{ required: true, message: '请输入验证码', trigger: 'blur' }]
	      },
	}
}

函数如下

   //验证电话号码
    checkPhone() {
      this.contactsInfo.phone = this.contactsInfo.phone.replace(/\D/g, '')
    },
   //获取验证码
    getCode() {
      const e = this.contactsInfo.phone.match( /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/  )
      if (!e) {
        this.$message.error('请输入正确的联系方式')
        return
      } else {
        this.setTime = true
        this.codeInterval = setInterval(() => {
          this.countDown--
          if (this.countDown === 0) {
            clearInterval(this.codeInterval)
            this.countDown = 60
            this.setTime = false
          }
        }, 1000)
        const data = {
          phone: this.contactsInfo.phone * 1
        }
        userApi.sendSMSCode(data).then((res) => {
          this.$message.success('验证码已成功发送到你的手机,请注意查收')
        })
      }
    },
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
短信验证码登录是一种通过发送短信验证码来验证用户身份的登录方式。具体实现的思路如下: 1. 用户在登录页面输入手机号码,并点击发送验证码按钮。 2. 后台接收到手机号码后,生成一个随机的验证码,并将验证码发送到用户的手机上。 3. 后台将生成的验证码存储在session中,以便后续验证使用。 4. 用户在手机上收到验证码后,输入验证码并点击登录按钮。 5. 后台接收到用户输入的验证码后,与session中存储的验证码进行比较。 6. 如果验证码匹配成功,则认为用户身份验证通过,可以进行登录操作。 7. 如果验证码匹配失败,则返回错误信息,要求用户重新输入验证码。 在具体的代码实现中,可以使用第三方短信服务提供商的API来发送短信验证码,比如榛子云。发送短信验证码的代码可以参考引用[2]中的示例代码。而验证码的验证可以参考引用[3]中的示例代码。 需要注意的是,为了保证安全性,验证码应该有一定的有效期限,并且在验证成功后应该立即从session中删除,以防止被恶意利用。此外,还可以考虑添加一些额外的安全措施,比如限制验证码的发送频率、添加图形验证码等。 总结起来,短信验证码登录是一种安全、方便的登录方式,通过发送短信验证码来验证用户身份,可以有效防止恶意登录和账号被盗用的风险。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值