当前位置:首页 > VUE

vue实现记住密码

2026-01-15 05:55:51VUE

Vue 实现记住密码功能

在 Vue 中实现记住密码功能通常涉及前端表单处理、本地存储(如 localStorage 或 cookie)以及安全注意事项。以下是具体实现方法:

使用 localStorage 存储用户凭证

  1. 创建登录表单组件 在 Vue 模板中添加复选框绑定 v-model,用于标记是否记住密码:

    <template>
      <form @submit.prevent="handleLogin">
        <input v-model="username" placeholder="用户名" />
        <input v-model="password" type="password" placeholder="密码" />
        <label>
          <input type="checkbox" v-model="rememberMe" /> 记住密码
        </label>
        <button type="submit">登录</button>
      </form>
    </template>
  2. 处理登录逻辑 在提交时根据复选框状态存储数据到 localStorage

    <script>
    export default {
      data() {
        return {
          username: '',
          password: '',
          rememberMe: false
        };
      },
      methods: {
        handleLogin() {
          if (this.rememberMe) {
            localStorage.setItem('username', this.username);
            localStorage.setItem('password', this.password);
          } else {
            localStorage.removeItem('username');
            localStorage.removeItem('password');
          }
          // 调用登录 API
        }
      },
      created() {
        const savedUsername = localStorage.getItem('username');
        const savedPassword = localStorage.getItem('password');
        if (savedUsername && savedPassword) {
          this.username = savedUsername;
          this.password = savedPassword;
          this.rememberMe = true;
        }
      }
    };
    </script>

使用 Cookie 替代 localStorage

如果需要更灵活的过期时间或后端读取,可以使用 js-cookie 库:

  1. 安装依赖:

    npm install js-cookie
  2. 修改存储逻辑:

    import Cookies from 'js-cookie';
    
    // 存储(设置7天过期)
    if (this.rememberMe) {
      Cookies.set('username', this.username, { expires: 7 });
      Cookies.set('password', this.password, { expires: 7 });
    }
    
    // 读取
    const savedUsername = Cookies.get('username');
    const savedPassword = Cookies.get('password');

安全注意事项

  1. 避免明文存储密码 推荐只存储用户名,密码通过后端返回的 token 替代:

    // 登录成功后存储 token
    localStorage.setItem('authToken', response.data.token);
  2. 使用 HTTPS 确保所有传输加密,防止中间人攻击。

  3. 提供显式退出选项 清除所有存储的敏感数据:

    localStorage.removeItem('authToken');
    Cookies.remove('username');

完整示例(Token 方案)

<template>
  <form @submit.prevent="handleLogin">
    <input v-model="username" placeholder="用户名" />
    <input v-model="password" type="password" placeholder="密码" />
    <label>
      <input type="checkbox" v-model="rememberMe" /> 记住我
    </label>
    <button type="submit">登录</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      rememberMe: false
    };
  },
  created() {
    this.username = localStorage.getItem('username') || '';
    this.rememberMe = !!this.username;
  },
  methods: {
    async handleLogin() {
      const res = await api.login(this.username, this.password);
      if (res.success) {
        if (this.rememberMe) {
          localStorage.setItem('username', this.username);
        } else {
          localStorage.removeItem('username');
        }
        localStorage.setItem('authToken', res.token);
      }
    }
  }
};
</script>

关键点总结

  • 优先使用 token 而非明文密码
  • 提供明显的用户控制选项(如复选框)
  • 敏感数据需设置合理的过期时间
  • 退出登录时彻底清除数据

vue实现记住密码

标签: 密码vue
分享给朋友:

相关文章

vue实现tab标签

vue实现tab标签

Vue 实现 Tab 标签的方法 使用动态组件和 v-for 渲染标签 通过 v-for 循环生成标签页标题,结合 v-bind:class 动态切换激活状态。使用 v-show 或动态组件 <…

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed:…

vue实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debo…

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm insta…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。…