当前位置:首页 > VUE

vue实现找回密码源码

2026-03-27 02:51:19VUE

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

vue实现找回密码源码

找回密码表单组件

<template>
  <div class="forgot-password">
    <form @submit.prevent="handleSubmit">
      <input 
        v-model="email" 
        type="email" 
        placeholder="注册邮箱"
        required
      >
      <button type="submit">发送重置链接</button>
    </form>
    <p v-if="message" :class="{ error: isError }">{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      email: '',
      message: '',
      isError: false
    }
  },
  methods: {
    async handleSubmit() {
      try {
        const response = await axios.post('/api/password/email', {
          email: this.email
        });
        this.message = response.data.message;
        this.isError = false;
      } catch (error) {
        this.message = error.response.data.message || '请求失败';
        this.isError = true;
      }
    }
  }
}
</script>

密码重置组件

<template>
  <div class="reset-password">
    <form @submit.prevent="handleSubmit">
      <input 
        v-model="password" 
        type="password" 
        placeholder="新密码"
        required
      >
      <input 
        v-model="password_confirmation" 
        type="password" 
        placeholder="确认密码"
        required
      >
      <input type="hidden" v-model="token">
      <button type="submit">重置密码</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      password: '',
      password_confirmation: '',
      token: this.$route.query.token || '',
      email: this.$route.query.email || ''
    }
  },
  methods: {
    async handleSubmit() {
      if (this.password !== this.password_confirmation) {
        alert('两次密码输入不一致');
        return;
      }

      try {
        await axios.post('/api/password/reset', {
          email: this.email,
          password: this.password,
          password_confirmation: this.password_confirmation,
          token: this.token
        });
        this.$router.push('/login');
      } catch (error) {
        console.error(error);
      }
    }
  }
}
</script>

路由配置示例

const routes = [
  {
    path: '/forgot-password',
    component: ForgotPassword
  },
  {
    path: '/reset-password',
    component: ResetPassword
  }
];

后端API接口规范

前端需要对接以下API端点:

vue实现找回密码源码

  • 发送重置邮件:POST /api/password/email
  • 重置密码:POST /api/password/reset

密码强度验证

可在前端添加密码强度验证:

validatePassword(password) {
  const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
  return regex.test(password);
}

注意事项

  1. 确保使用HTTPS协议传输敏感数据
  2. 重置链接应设置有效期(通常24小时)
  3. 前端验证不能替代后端验证
  4. 使用axios拦截器处理全局错误
  5. 密码重置成功后应强制用户重新登录

以上代码需要配合后端服务实现完整的密码找回功能,后端应负责生成重置令牌、发送邮件和实际更新密码等操作。

分享给朋友:

相关文章

vue源码实现分析

vue源码实现分析

Vue 源码核心实现分析 Vue 的源码实现主要围绕响应式系统、虚拟 DOM、模板编译和组件化等核心概念展开。以下是对关键部分的详细分析: 响应式系统实现 Vue 使用 Object.defineP…

vue实现聊天源码

vue实现聊天源码

Vue实现聊天功能的核心步骤 环境准备 安装Vue CLI创建项目,添加必要依赖如vue-socket.io或socket.io-client实现实时通信。基础项目结构需包含聊天组件、消息列表和输入框…

vue axios实现登录源码

vue axios实现登录源码

以下是一个基于Vue.js和Axios实现登录功能的完整示例代码,包含前端和后端交互逻辑: 前端部分(Vue组件) 安装Axios依赖: npm install axios 登录组件(Login.…

如何看react源码

如何看react源码

阅读React源码的方法 克隆React仓库 从GitHub克隆React的官方仓库,切换到稳定版本分支。React采用Monorepo结构,核心代码在packages/react和packages/…

react源码实现

react源码实现

React 源码实现分析 React 的核心源码实现涉及虚拟 DOM、协调算法、组件生命周期等多个关键部分。以下是主要实现机制的解析: 虚拟 DOM 结构 React 使用虚拟 DOM 作为真实 D…

css源码制作

css源码制作

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