当前位置: 首页 > news >正文

Vue3登录注册验证码实战

以下是使用 Vue.js 实现登录、注册和验证码功能的完整代码示例。我将逐步解释关键部分,并提供可运行的 HTML 文件代码。代码使用了 Vue 3 的 Composition API,并模拟了验证码生成(真实应用中应通过后端 API 获取验证码)。

思路说明

  1. 功能需求

    • 登录:用户输入用户名、密码和验证码。
    • 注册:切换到注册表单,输入用户名、密码和验证码。
    • 验证码:前端生成随机验证码(简单模拟),用户需正确输入。
    • 表单切换:提供按钮在登录和注册模式间切换。
  2. 安全注意

    • 真实应用中,验证码应由后端生成(避免前端伪造),登录/注册请求需发送到后端 API。
    • 本示例为简化,在前端模拟验证码和成功响应。

完整代码示例

将以下代码保存为 HTML 文件(例如index.html),在浏览器中打开即可运行。

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue登录注册与验证码</title> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <style> body { font-family: Arial, sans-serif; padding: 20px; } form { max-width: 400px; margin: 0 auto; } div { margin-bottom: 15px; } label { display: block; margin-bottom: 5px; } input { width: 100%; padding: 8px; } button { padding: 8px 15px; margin-right: 10px; } .captcha-container { display: flex; align-items: center; } .captcha-value { font-size: 20px; margin: 0 10px; padding: 5px; background: #eee; } .message { color: red; margin-top: 10px; } </style> </head> <body> <div id="app"> <h1>{{ isRegistering ? '用户注册' : '用户登录' }}</h1> <form @submit.prevent="handleSubmit"> <div> <label for="username">用户名:</label> <input type="text" id="username" v-model="username" required> </div> <div> <label for="password">密码:</label> <input type="password" id="password" v-model="password" required> </div> <div class="captcha-container"> <label for="captcha">验证码:</label> <input type="text" id="captcha" v-model="captchaInput" required> <span class="captcha-value">{{ captchaValue }}</span> <button type="button" @click="generateCaptcha">刷新</button> </div> <div> <button type="button" @click="toggleForm">{{ isRegistering ? '切换到登录' : '切换到注册' }}</button> <button type="submit">{{ isRegistering ? '注册' : '登录' }}</button> </div> <p v-if="message" class="message">{{ message }}</p> </form> </div> <script> const { createApp, ref } = Vue; const app = createApp({ setup() { // 响应式数据 const username = ref(''); const password = ref(''); const captchaInput = ref(''); const captchaValue = ref(''); const isRegistering = ref(false); const message = ref(''); // 生成随机验证码(4位数字) const generateCaptcha = () => { const chars = '0123456789'; let result = ''; for (let i = 0; i < 4; i++) { result += chars.charAt(Math.floor(Math.random() * chars.length)); } captchaValue.value = result; }; // 初始化生成验证码 generateCaptcha(); // 切换登录/注册表单 const toggleForm = () => { isRegistering.value = !isRegistering.value; generateCaptcha(); // 刷新验证码 message.value = ''; // 清空消息 }; // 处理表单提交 const handleSubmit = () => { // 验证码检查 if (captchaInput.value !== captchaValue.value) { message.value = '验证码错误!'; generateCaptcha(); // 刷新验证码 return; } // 模拟登录/注册成功 if (isRegistering.value) { message.value = `注册成功,用户名: ${username.value}`; } else { message.value = `登录成功,用户名: ${username.value}`; } // 清空表单(可选) setTimeout(() => { username.value = ''; password.value = ''; captchaInput.value = ''; generateCaptcha(); }, 2000); }; return { username, password, captchaInput, captchaValue, isRegistering, message, generateCaptcha, toggleForm, handleSubmit }; } }); app.mount('#app'); </script> </body> </html>

代码解释

  1. Vue 初始化

    • 使用 Vue 3 的createAppref创建响应式应用。
    • 数据包括username,password,captchaInput,captchaValue,isRegistering(控制表单模式),message(反馈信息)。
  2. 验证码功能

    • generateCaptcha方法:生成 4 位随机数字验证码,存储在captchaValue
    • 页面加载时自动生成验证码,用户可点击“刷新”按钮重新生成。
    • 提交表单时,检查用户输入 (captchaInput) 是否与captchaValue匹配。
  3. 表单切换

    • toggleForm方法:切换isRegistering状态,改变表单标题和按钮文本。
    • 使用 Vue 的v-if和三元表达式动态显示内容。
  4. 表单提交

    • handleSubmit方法:使用@submit.prevent阻止默认提交行为。
    • 先验证验证码,错误时显示消息并刷新验证码。
    • 验证成功后,模拟登录或注册成功消息,并清空表单(可选)。

运行说明

  1. 复制上述代码到index.html文件。
  2. 在浏览器中打开文件。
  3. 测试:
    • 默认是登录表单,输入用户名、密码和验证码。
    • 点击“切换到注册”进入注册模式。
    • 验证码错误时会提示,正确时显示成功消息。

扩展建议

  • 后端集成:在真实项目中,使用 Axios 发送请求到后端 API,例如:
    // 伪代码示例 import axios from 'axios'; const login = async () => { try { const response = await axios.post('/api/login', { username, password }); console.log(response.data); } catch (error) { console.error('登录失败', error); } };

    编程语言C++wap.chichenghj.com++c语言的魅力
    编程语言C++wap.xytdyf.com++c语言的魅力
    编程语言C++wap.huishangda.cn++c语言的魅力
    编程语言C++wap.jnlangrui.com++c语言的魅力
    编程语言C++wap.hisee.top++c语言的魅力
    编程语言C++m.chichenghj.com++c语言的魅力
    编程语言C++www.chichenghj.com++c语言的魅力
    编程语言C++www.blog.chichenghj.com++c语言的魅力
    编程语言C++www.share.chichenghj.com++c语言的魅力
    编程语言C++read.share.chichenghj.com++c语言的魅力
    编程语言C++www.xytdyf.com++c语言的魅力
    编程语言C++www.blog.xytdyf.com++c语言的魅力
    编程语言C++www.share.xytdyf.com++c语言的魅力
    编程语言C++read.share.xytdyf.com++c语言的魅力
    编程语言C++m.xytdyf.com++c语言的魅力
    编程语言C++www.huishangda.cn++c语言的魅力
    编程语言C++www.blog.huishangda.cn++c语言的魅力
    编程语言C++www.share.huishangda.cn++c语言的魅力
    编程语言C++read.share.huishangda.cn++c语言的魅力
    编程语言C++m.huishangda.cn++c语言的魅力
    编程语言C++www.jnlangrui.com++c语言的魅力
    编程语言C++www.blog.jnlangrui.com++c语言的魅力
    编程语言C++www.share.jnlangrui.com++c语言的魅力
    编程语言C++read.share.jnlangrui.com++c语言的魅力
    编程语言C++m.jnlangrui.com++c语言的魅力

  • 验证码加强:后端应生成图形或复杂验证码,并验证用户输入。
  • 输入验证:添加更多验证规则(如密码强度)。

此代码提供了一个基础框架,您可以根据需求扩展功能!

http://www.jsqmd.com/news/285466/

相关文章:

  • 一张图看懂无线网络参考模型
  • Elcomsoft Advanced PDF Password Recovery: PDF 文件离线解密取证方案
  • 详解静态资源分配的三种流派
  • Java性能优化实战:20个核心技巧与案例
  • 详解无线网络中的“轮询 (Polling)”机制
  • TinyPro移动端适配方案的技术拆解
  • # 一篇文章带你彻底搞懂 IP 地址(真的懂那种)
  • BaSalam波斯语商品实体分类数据集分析报告-包含340万条商品记录涵盖多领域商品信息支持NLP研究电商应用开发-电商平台的自动化管理、精准营销、智能客服-波斯语NLP研究和电商应用开发
  • 乱中有序:详解 ALOHA 协议的两种形态
  • Unlikely argument type for equals(): JSONObject seems to be unrelated to String
  • Flutter + OpenHarmony 自动化测试全攻略:从单元测试到多设备真机云测 - 指南
  • 如何在chrome浏览器安装 vue 插件
  • CSGO电子竞技比赛完整数据集-包含3场职业比赛状态与事件数据-支持游戏分析与AI模型训练-游戏平衡性分析、选手表现评估、比赛结果预测、战术分析系统-游戏开发者、数据分析师、A I研究人员、电子竞技
  • AI论文改写工具Top10:快速降重与创作
  • 安装docker desktop 后出现WSL版本低需要更新问题
  • 智能论文写作:10款AIGC工具推荐
  • 知从木牛英飞凌TRAVEO CYT4BB SECUREDEBUG介绍
  • 肺部CT影像血管分割(HiPaS方案)
  • 学长亲荐2026继续教育AI论文平台TOP9:开题文献综述全攻略
  • 隧道调频广播:长隧道如何实现信号“零盲区”?
  • 存量深耕时代:谁是B2B重资产企业寻找“第二增长曲线”的幕后功臣?
  • 1.3、信息系统治理
  • 软件测试:接口测试详解
  • 软考-系统架构师-信息安全技术基础知识(三)
  • 跳出低价竞争死循环:盘点擅长构建“高溢价”品牌资产的B2B咨询机构
  • 如何做接口测试,5分钟时间看完这篇文章,你就懂了...
  • 战略即增长:解析中网、里斯、特劳特赋能产业标杆的差异化“杀手锏
  • 在Ubuntu上下载Questasim
  • 指令排序与内存顺序:并发编程的核心概念(deepseek)
  • 组建AI本地大模型主机 金士顿存储优化方案