当前位置:首页 > VUE

vue实现找回密码源码

2026-01-07 04:34:10VUE

以下是一个基于Vue.js的找回密码功能实现方案,包含前端页面逻辑与关键代码示例:

vue实现找回密码源码

前端页面结构(Vue组件)

使用Vue 3的Composition API实现密码找回表单:

vue实现找回密码源码

<template>
  <div class="forgot-password">
    <h3>找回密码</h3>
    <form @submit.prevent="handleSubmit">
      <div class="form-group">
        <label>邮箱地址</label>
        <input 
          type="email" 
          v-model="email"
          required
          placeholder="请输入注册邮箱"
        />
      </div>
      <button type="submit" :disabled="isLoading">
        {{ isLoading ? '发送中...' : '发送重置链接' }}
      </button>
      <div v-if="message" class="message" :class="{ error: isError }">
        {{ message }}
      </div>
    </form>
  </div>
</template>

业务逻辑实现

<script setup>
import { ref } from 'vue'
import axios from 'axios'

const email = ref('')
const message = ref('')
const isError = ref(false)
const isLoading = ref(false)

const handleSubmit = async () => {
  isLoading.value = true
  try {
    const response = await axios.post('/api/password/forgot', {
      email: email.value
    })
    message.value = response.data.message
    isError.value = false
  } catch (err) {
    message.value = err.response?.data?.message || '请求失败,请重试'
    isError.value = true
  } finally {
    isLoading.value = false
  }
}
</script>

重置密码页面

当用户点击邮件中的链接后,显示密码重置表单:

<template>
  <div class="reset-password">
    <h3>重置密码</h3>
    <form @submit.prevent="handleReset">
      <input type="hidden" v-model="token" />
      <div class="form-group">
        <label>新密码</label>
        <input 
          type="password" 
          v-model="newPassword"
          required
          minlength="8"
        />
      </div>
      <div class="form-group">
        <label>确认密码</label>
        <input 
          type="password" 
          v-model="confirmPassword"
          required
        />
      </div>
      <button type="submit">提交</button>
    </form>
  </div>
</template>

样式建议

<style scoped>
.forgot-password, .reset-password {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}

.form-group {
  margin-bottom: 15px;
}

.message {
  margin-top: 15px;
  padding: 10px;
  border-radius: 4px;
}

.error {
  background-color: #ffebee;
  color: #f44336;
}
</style>

后端接口建议

  1. 发送重置邮件接口(POST /api/password/forgot
  • 验证邮箱是否存在
  • 生成唯一token并设置有效期(通常24小时)
  • 发送含重置链接的邮件
  1. 重置密码接口(POST /api/password/reset
  • 验证token有效性
  • 检查两次密码输入是否一致
  • 更新数据库密码
  • 使token失效

安全注意事项

  • 使用HTTPS协议传输数据
  • 密码重置链接设置有效期
  • 前端进行基础验证,后端必须再次验证
  • 记录密码重置操作日志
  • 限制同一IP的频繁请求

完整实现需要结合后端服务(如Node.js、Laravel等),以上代码提供了Vue前端的关键实现逻辑。实际项目中还需添加路由配置、表单验证等完整功能。

分享给朋友:

相关文章

vue2.0源码实现

vue2.0源码实现

Vue 2.0 核心源码实现解析 Vue 2.0 的源码设计围绕响应式系统、虚拟 DOM 和组件化展开。以下是其核心模块的实现要点: 响应式系统 通过 Object.defineProperty 实…

vue实现图片上传源码

vue实现图片上传源码

Vue 图片上传实现源码 以下是一个基于 Vue 的图片上传组件实现,包含前端代码和关键逻辑说明。示例使用 axios 发送请求,并支持预览、限制文件类型和大小等功能。 基础模板结构 <tem…

css源码制作

css源码制作

CSS 源码制作基础 CSS(层叠样式表)用于控制网页的视觉表现,以下为制作 CSS 源码的核心方法: 文件创建与链接 新建 .css 文件(如 style.css),通过 <link>…

js sort源码实现

js sort源码实现

JavaScript 的 Array.prototype.sort 方法在 V8 引擎中的实现会根据数组类型和长度选择不同的排序算法,主要分为以下情况: 小数组(长度 ≤ 10) 使用插入排序(Ins…

如何阅读java源码

如何阅读java源码

理解Java源码的基本结构 Java源码通常由类(Class)、接口(Interface)、枚举(Enum)和注解(Annotation)组成。每个文件对应一个公共类或接口,文件名与公共类名一致。包(…

java 如何导入源码

java 如何导入源码

导入 Java 源码的方法 通过 IDE 直接导入项目 大多数集成开发环境(如 IntelliJ IDEA、Eclipse)支持直接导入现有项目。在 IDE 中选择 "File" > "Open…