返回

Vue 实现发送短信验证码功能

前端

引言

在现代数字时代,短信验证码已成为增强应用程序安全性和用户身份验证的必要措施。Vue.js 是一款流行的前端框架,它提供了一套全面的工具,可轻松集成短信验证码功能。

本教程将引导您逐步完成使用 Vue.js 发送短信验证码的整个过程。我们将涵盖从设置到集成的所有步骤,并提供代码示例以帮助您理解该过程。

先决条件

在继续本教程之前,请确保您满足以下先决条件:

  • Node.js 和 npm 已安装在您的系统上
  • Vue CLI 已安装
  • 您有一个有效的短信服务提供商帐户(例如 Twilio 或 Vonage)

设置

1. 创建 Vue 项目

首先,使用 Vue CLI 创建一个新的 Vue 项目:

vue create my-sms-app

导航到新创建的项目目录:

cd my-sms-app

2. 安装依赖项

接下来,安装必要的依赖项:

npm install axios vue-toasted
  • axios:用于处理 HTTP 请求
  • vue-toasted:用于显示通知

集成

1. 配置短信服务提供商

登录您的短信服务提供商帐户并获取以下信息:

  • 帐户 SID
  • 认证令牌
  • 电话号码

2. 创建 Vuex 存储

我们将使用 Vuex 存储管理应用程序状态。在 store/index.js 文件中,添加以下内容:

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

const state = {
  phoneNumber: '',
  verificationCode: '',
  loading: false,
  error: null,
}

const mutations = {
  setPhoneNumber(state, payload) {
    state.phoneNumber = payload
  },
  setVerificationCode(state, payload) {
    state.verificationCode = payload
  },
  setLoading(state, payload) {
    state.loading = payload
  },
  setError(state, payload) {
    state.error = payload
  },
}

const actions = {
  sendVerificationCode({ commit }, phoneNumber) {
    commit('setLoading', true)
    axios
      .post(
        'https://your-api-endpoint.com/send-sms',
        { phoneNumber },
        {
          headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Basic ' + btoa(`${your_account_sid}:${your_auth_token}`),
          },
        }
      )
      .then(res => {
        commit('setLoading', false)
        commit('setError', null)
        this.$toasted.success('Verification code sent successfully.')
      })
      .catch(err => {
        commit('setLoading', false)
        commit('setError', err.message)
        this.$toasted.error('Error sending verification code.')
      })
  },
  verifyVerificationCode({ commit }, { phoneNumber, verificationCode }) {
    commit('setLoading', true)
    axios
      .post(
        'https://your-api-endpoint.com/verify-sms',
        { phoneNumber, verificationCode },
        {
          headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Basic ' + btoa(`${your_account_sid}:${your_auth_token}`),
          },
        }
      )
      .then(res => {
        commit('setLoading', false)
        commit('setError', null)
        this.$toasted.success('Verification code is valid.')
      })
      .catch(err => {
        commit('setLoading', false)
        commit('setError', err.message)
        this.$toasted.error('Error verifying verification code.')
      })
  },
}

export default new Vuex.Store({
  state,
  mutations,
  actions,
  strict: true,
})

3. 创建发送验证码组件

components 目录中,创建 SendVerificationCode.vue 组件:

<template>
  <div>
    <input v-model="phoneNumber" type="tel" placeholder="Phone Number" />
    <button @click="sendVerificationCode">Send Verification Code</button>
  </div>
</template>

<script>
import { mapActions, mapGetters } from 'vuex'

export default {
  name: 'SendVerificationCode',
  computed: {
    ...mapGetters(['phoneNumber', 'loading', 'error']),
  },
  methods: {
    ...mapActions(['sendVerificationCode']),
  },
}
</script>

4. 创建验证验证码组件

同样在 components 目录中,创建 VerifyVerificationCode.vue 组件:

<template>
  <div>
    <input v-model="verificationCode" type="tel" placeholder="Verification Code" />
    <button @click="verifyVerificationCode">Verify Verification Code</button>
  </div>
</template>

<script>
import { mapActions, mapGetters } from 'vuex'

export default {
  name: 'VerifyVerificationCode',
  computed: {
    ...mapGetters(['phoneNumber', 'verificationCode', 'loading', 'error']),
  },
  methods: {
    ...mapActions(['verifyVerificationCode']),
  },
}
</script>

使用

现在,您可以在您的 Vue 应用程序中使用这些组件:

<template>
  <div>
    <h1>Send and Verify SMS</h1>
    <SendVerificationCode />
    <VerifyVerificationCode />
  </div>
</template>

结论

通过遵循本教程中的步骤,您已成功地在 Vue.js 应用程序中实现了发送短信验证码的功能。这将显著增强您的应用程序的安全性,并为您的用户提供额外的身份验证层。

欢迎您根据自己的具体需求定制此解决方案并探索短信验证码的其他用例。如果您有任何问题或需要进一步的帮助,请随时发表评论。