vue實現圖片滑動驗證功能

圖片滑動驗證,是目前比較常見的驗證方式,主要目的是防止用戶利用機器人自動註冊、登錄、灌水。

目前vue技術日趨成熟,已經有專門針對圖片滑動驗證功能的插件瞭。具體使用方式如下:

1.安裝插件——npm install --save vue-monoplasty-slide-verify

註意此處的--save也就是簡化版的-s,是為瞭將下載的插件保存到package.json中的depencedies中,這樣其他人在下載你的項目後,依然可以通過npm install將插件安裝到node_modules.

2.在main.js中引入插件並綁定到vue

import Vue from 'vue';
import SlideVerify from 'vue-monoplasty-slide-verify';
 
Vue.use(SlideVerify);

3.封裝圖片驗證組件

<template>
  <slide-verify
    :l="42"
    :r="10"
    :w="310"
    :h="155"
    :imgs="picArray"
    :show="false"
    slider-text="向右滑動完成驗證"
    ref="slideverify"
    @success="onSuccess"
    @fail="onFail"
    @refresh="onRefresh"
  ></slide-verify>
</template>

<script>
export default {
  name: "SliderVerify",
  data() {
    return {
      //在data中引入`assets`中的圖片可以通過`require`的方式來引入
      picArray: [
        require("@/assets/verify/1.jpg"),
        require("@/assets/verify/2.jpg"),
        require("@/assets/verify/3.jpg"),
        require("@/assets/verify/4.jpg"),
        require("@/assets/verify/5.jpg"),
        require("@/assets/verify/6.jpg"),
        require("@/assets/verify/7.jpg"),
        require("@/assets/verify/8.jpg"),
      ],
    };
  },
  methods: {
    onSuccess() {//往父級傳遞驗證通過的函數
      this.$emit("success");
    },
    onReset() {//重置圖片驗證組件
      this.$refs.slideverify.reset();
    },
    onFail() {},
    onRefresh() {},
  },
};
</script>

4.父組件使用圖片驗證組件

import SlideVerify from "@/components/SlideVerify";//引入

export default {
  name: "Redister",
  components: {
    SlideVerify,//註冊組件
  },
  data(){
      return{
          isShowSlide:false
      }
  }
}

html中使用組件

<div class="slideverify" v-show="isShowSlide" @mouseleave="hideSlide">
  <SlideVerify ref="slideblock" @success="sendSmsCode"></SlideVerify>
</div>

對應的js部分:

hideSlide() {
  setTimeout(() => {
    this.isShowSlide = false;
  }, 500);
},
sendSmsCode() {
    //此處的處理是:圖片驗證通過後,發送短信驗證碼,這個要根據具體情況單獨處理
  setTimeout(() => {
    this.$api
      .getSendForgetSmsCode({
        mobile: this.form.account,
      })
      .then((res) => {
        this.isShowSlide = false;
        if (res.data.success) {
          this.timeCountDown();
          this.$message.success("短信驗證碼發送成功");
        } else {
          this.$message.error(res.data);
        }
      })
      .catch((err) => {});
  }, 500);
},

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: