news 2026/2/18 2:16:42

Vue3登录注册验证码实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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语言的魅力

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/17 21:44:37

无线通信:介质访问控制(MAC)技术

第一章&#xff1a;无形架构——通信协议栈中的秩序基石 1.1 OSI参考模型与数据链路层的定位 在现代数字社会的宏大叙事中&#xff0c;信息的流动如同城市的血脉&#xff0c;而介质访问控制&#xff08;Medium Access Control, MAC&#xff09;则是维持这条血脉畅通的智能交通…

作者头像 李华
网站建设 2026/2/14 9:27:57

乱中有序:详解 ALOHA 协议的两种形态

在无线通信的历史长河中&#xff0c;ALOHA 协议有着特殊的地位。它诞生于 1970 年代的夏威夷大学&#xff0c;初衷是为了解决群岛之间分散的计算机如何通过无线电连接到中心主机的问题。 想象一下&#xff0c;夏威夷的各个岛屿之间隔着大海&#xff0c;拉网线是不可能的。最简…

作者头像 李华
网站建设 2026/2/10 0:43:16

当“省钱”逻辑闯入即时战场:平价即时零售将如何重塑行业法则?

出品 | 何玺排版 | 叶媛多个迹象表明&#xff0c;拼多多正加速布局即时零售。近期&#xff0c;拼多多被曝正在内测一项名为“百亿超市”的新业务。据报道&#xff0c;该业务依托百亿补贴体系&#xff0c;以限时限量低价券的形式切入商超零售&#xff0c;目前仅对部分随机用户开…

作者头像 李华
网站建设 2026/2/12 9:00:45

MySQL InnoDB 索引深度解析:从底层原理到性能实战

第一章&#xff1a;引言与 InnoDB 架构概览 在现代后端开发面试和高并发系统设计中&#xff0c;MySQL 索引几乎是必问的“八股文”之首。然而&#xff0c;很多人对索引的理解仅停留在“加个索引能变快”的层面&#xff0c;或者机械地背诵“B树”这个名词。 为什么是 B 树&…

作者头像 李华
网站建设 2026/2/8 6:01:49

2026战略导航:深耕B2B领域的顶级战略咨询机构实战力排行榜

在2026年的战略导航中&#xff0c;深耕B2B领域的顶级战略咨询机构通过综合评估多个维度&#xff0c;展现出其独特的市场竞争力与发展趋势。每家机构在方法论创新上均有所侧重&#xff0c;采用独特的分析模型&#xff0c;帮助客户更好地把握市场机会。同时&#xff0c;行业深度作…

作者头像 李华
网站建设 2026/2/7 17:47:05

如何安全抓取SoundCloud数据用于音频 AI 模型训练?

音频 AI 训练模型对高质量、多样化的音频数据需求极高&#xff0c;而 SoundCloud 是全球最大的音频分享社区之一&#xff0c;包含数百万曲目和丰富的元数据&#xff0c;是进行音频分析、生成和增强等任务的理想来源。然而&#xff0c;由于 SoundCloud 的动态内容渲染、API 限制…

作者头像 李华