VUE前端实现天爱滑块验证码--详细教程

embedded/2024/12/27 8:06:41/

第一步:

Git地址:tianai-captcha-demo: 滑块验证码demo

找到目录src/main/resources/static,拷贝 static 并改名为 tac 即可。

第二步:

将改为tac 的文件,放进项目根目录中,如下图:

第三步:

点击链接:https://minio.tianai.cloud/public/static/captcha/js/load.min.js

将里面的内容拷贝下来,创建load.min.js 文件 在 tac/js/load.min.js。

第四步:

会报初始化的错误:初始化tac失败 referenceerror: tac is not defined

解决方法:

1、下载 rollup-plugin-copy依赖:yarn add rollup-plugin-copy --save-dev

我这边用的是yarn,npm的话是:npm installrollup-plugin-copy --save-dev

成功如下图:

2、在vite.config.ts 文件中,在build中加入以下配置:

import copyPlugin from 'rollup-plugin-copy';
export default defineConfig(({ mode }) =>{return {build: {rollupOptions: {plugins: [copyPlugin({targets: [{ src: 'tac/*', dest: 'dist/tac' }],hook: 'writeBundle' //防止打包后,tac文件丢失}),],},// outDir: 'dist',// assetsDir: 'assets',},}
})

第五步:

在使用到验证码的 vue 文件中,后端需要给俩个接口:生成验证码接口 和 校验验证码接口

const checkVerificationCode = () => {const apiBaseUrl = import.meta.env.VITE_API_BASE_URL;// config 对象为TAC验证码的一些配置和验证的回调const config = {//生成接口requestCaptchaDataUrl: `${apiBaseUrl}/getReCaptchaImageV2.json`,// 验证接口validCaptchaUrl: `${apiBaseUrl}/getReCaptchaImageV3.json`,bindEl: '#captcha-box',// 验证成功回调函数(必选项,必须配置)validSuccess: (res, c, tac) => {// 销毁验证码服务tac.destroyWindow();// console.log("验证成功,后端返回的数据为", res);},// 验证失败的回调函数(可忽略,如果不自定义 validFail 方法时,会使用默认的)validFail: (res, c, tac) => {console.log('验证码验证失败回调...', res, c, tac);// 验证失败后重新拉取验证码tac.reloadCaptcha();},// 刷新按钮回调事件btnRefreshFun: (el, tac) => {console.log('刷新按钮触发事件...');tac.reloadCaptcha();},// 关闭按钮回调事件btnCloseFun: (el, tac) => {console.log('关闭按钮触发事件...');tac.destroyWindow();}};// 一些样式配置, 可不传const style = {// 按钮样式btnUrl: "https://minio.tianai.cloud/public/captcha-btn/btn3.png",// 背景样式bgUrl: "https://minio.tianai.cloud/public/captcha-btn/btn3-bg.jpg",// logo地址logoUrl: "@/assets/logo.png",// 滑动边框样式moveTrackMaskBgColor: "#f7b645",moveTrackMaskBorderColor: "#ef9c0d"}// 参数1 为 tac文件是目录地址, 目录里包含 tac的js和css等文件// 参数2 为 tac验证码相关配置// 参数3 为 tac窗口一些样式配置window.initTAC('./tac', config, style).then((tac) => {tac.init(); // 调用init则显示验证码}).catch((e) => {console.log('初始化tac失败', e);});
};

注意点:

1、更改图标或者背景地址

图片需要放在 tac/images 文件中,不然生产环境会渲染不出的情况出现。

2、接口是拼接本地配置好的后端地址

到这里基本上就实现了滑块验证功能,然后在各个回调中做处理。

后端生成接口返回的数据及格式

重点:

在 tac.min.js 源码文件 中requestCaptchaData 这个方法是调用后端生成验证码的接口

参数要自己更改下,如下:

额外:

回调参数不需要的也可以自己在源码里面修改

效果如下:


http://www.ppmy.cn/embedded/148689.html

相关文章

vue2 升级为 vite 打包

VUE2 中使用 Webpack 打包、开发,每次打包时间太久,尤其是在开发的过程中,本文记录一下 VUE2 升级Vite 步骤。 安装 Vue2 Vite 依赖 dev 依赖 vitejs/plugin-vue2": "^2.3.3 vitejs/plugin-vue2-jsx": "^1.1.1 vite&…

【Chrome Extension】二、导航栏快速查询

【Chrome Extension】二、导航栏快速查询 介绍插件内容1、目录2、manifest.json3、service-worker.js4、sw-omnibox.js5、sw-tips.js6、content.js 介绍 导航栏,输入fei,然后tab可进入当前扩展:Quick Query FeiFeiYeChuan CSDN Blogs&#x…

Ruby+Selenium教程

什么是 Minitest? Minitest 是 Ruby 的测试框架,提供一整套测试工具。它运行速度快,支持 TDD、BDD、模拟和基准测试 以下是使用Ruby、Selenium WebDriver和Minitest 的脚本,用于断言 Restful Booker Platform 的“页面标题”等于…

Log4j1.27配置日志输出级别不起效

起因:构建独立版本debezuim使用时,日志一直打印debug信息。 原因:包冲突问题,进行排包操作。 参考log4j日志级别配置完成后不生效 系统一直打印debug日志_log4j不起作用-CSDN博客 1、application.properties logging.configc…

UDP的报文结构和特点

1.UDP传输协议的特点 使用UDP传输协议进行通信,过程类似于寄信,它的特点如下: 无连接:知道对端的IP号和端口号就直接进行传输,不需要建立连接;不可靠:没有可靠机制,发送数据包以后&a…

1.BMS电池管理系统的基础知识总结

我们常说的电动汽车核心三电部件,即大三电分别为电机、电控、电池,小三电为车载充电机、DCDC转换器、高压配电盒,其中动力电池系统占电动汽车成本40~ 50%左右,所以在动力电池有补贴高峰时,新能源汽车相当便宜,BMS作为动力电池系统中的灵魂而在,大约占动力电池成本的15~1…

Blazor项目中使用EF读写 SQLite 数据库

《信管通低代码信息管理系统应用平台》开发环境就是Blazor,其中的数据库访问就是使用SQLite数据库。SQLite 是一种轻量级的嵌入式数据库,具有以下优点: 1. 轻量级 小巧易用:SQLite 只需要一个动态库或单个文件,库的大…

美畅物联丨分布式锁实战:Spring Boot项目中的Redis应用

在分布式系统里,多个节点或许会同时对共享资源进行访问与操作。为防止出现数据不一致、资源竞争等状况,就需要一种机制来对这些并发访问加以协调,于是分布式锁就出现了。它如同一把全局的钥匙,在同一时刻仅有一个节点能够获取该钥…