Если вы когда-либо заполняли форму в Интернете, скорее всего, вы сталкивались с reCAPTCHA от Google. Эта функция безопасности помогает предотвратить спам-рассылку веб-сайтов автоматическими ботами, требуя от пользователей выполнения задачи, которую могут выполнить только люди, например выбора изображений, соответствующих определенному описанию, или ввода искаженного текста. В этой статье мы рассмотрим, как добавить reCAPTCHA в форму VueJS с помощью компонента Vue Recaptcha.

Прежде чем мы начнем, вам необходимо иметь учетную запись Google и сгенерировать ключ сайта и секретный ключ для своего домена. Вы можете сделать это, посетив консоль администратора Google reCAPTCHA и следуя инструкциям. Получив ключи, мы можем приступить к настройке нашего проекта VueJS.

Во-первых, давайте установим пакет Vue Recaptcha через npm.

npm install vue-recaptcha

Далее давайте импортируем компонент и зарегистрируем его в нашем экземпляре Vue.

import Vue from 'vue'
import VueRecaptcha from 'vue-recaptcha'

Vue.component('vue-recaptcha', VueRecaptcha)

Теперь мы можем использовать компонент vue-recaptcha в нашем шаблоне.

<template>
  <div>
    <form @submit.prevent="submitForm">
      <label>
        Name:
        <input type="text" v-model="name">
      </label>
      <label>
        Email:
        <input type="email" v-model="email">
      </label>
      <vue-recaptcha ref="recaptcha" @verify="onVerify"></vue-recaptcha>
      <button type="submit">Submit</button>
    </form>
  </div>
</template>

Обратите внимание, что мы используем директиву @submit.prevent, чтобы предотвратить нормальную отправку формы, и вместо этого мы вызываем метод submitForm. Мы также используем директиву v-model для привязки наших входных значений к свойствам данных. Самая важная часть — это компонент vue-recaptcha, который мы используем с атрибутом ref, чтобы мы могли ссылаться на него позже в нашем коде. Мы также добавляем прослушиватель событий @verify для обработки проверки reCAPTCHA.

Теперь давайте определим наши данные и методы в разделе сценария.

export default {
  data() {
    return {
      name: '',
      email: ''
    }
  },
  methods: {
    submitForm() {
      this.$refs.recaptcha.execute()
    },
    onVerify(response) {
      // Verify the response with your server and submit the form
      console.log(response)
    }
  }
}

В методе submitForm мы вызываем метод execute для компонента vue-recaptcha, который инициирует вызов reCAPTCHA. Когда пользователь завершит вызов, будет вызван метод onVerify с токеном ответа. Затем вы можете проверить токен на своем сервере и отправить форму, если она действительна.

Вот и все! Теперь у вас должна быть работающая reCAPTCHA в вашей форме VueJS. Конечно, это всего лишь базовый пример — вы, вероятно, захотите настроить внешний вид и поведение своей reCAPTCHA в соответствии со своими потребностями. Компонент Vue Recaptcha предоставляет множество реквизитов и событий, которые вы можете использовать для этого.

Вот полный код для справки.

<template>
  <div>
    <form @submit.prevent="submitForm">
      <label>
        Name:
        <input type="text" v-model="name">
      </label>
      <label>
        Email:
        <input type="email" v-model="email">
      </label>
      <vue-recaptcha ref="recaptcha" @verify="onVerify"></vue-recaptcha>
      <button type="submit">Submit</button>
    </form>
  </div>
</template>
<script>
  import Vue from 'vue'
  import VueRecaptcha from 'vue-recaptcha'
  
  Vue.component('vue-recaptcha', VueRecaptcha)
  
  export default {
    data() {
      return {
        name: '',
        email: ''
      }
    },
    methods: {
      submitForm() {
        this.$refs.recaptcha.execute()
      },
      onVerify(response) {
        // Verify the response with your server and submit the form
        console.log(response)
      }
    }
  }
</script>

Об авторе

Я Ньоман Джиотиса — веб-разработчик с многолетним опытом работы с различными языками программирования и фреймворками. Лучше всего он разрабатывает новые веб-сайты, а также поддерживает и добавляет новые функции к существующему веб-сайту. Если вы заинтересованы, вы добро пожаловать на работу.