当前位置:首页 > 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. 提供显式退出选项 清除所有存储的敏感数据:

    vue实现记住密码

    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实现多个tab

vue实现多个tab

Vue 实现多个 Tab 的方法 使用动态组件切换 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现多个…

vue实现rtc

vue实现rtc

Vue 实现 RTC 的步骤 安装依赖 在 Vue 项目中安装 WebRTC 相关依赖,如 simple-peer 或 peerjs,用于简化 WebRTC 的实现。 运行以下命令安装 simple-…

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现气泡

vue实现气泡

Vue 实现气泡效果的方法 在 Vue 中实现气泡效果可以通过 CSS 动画、第三方库或自定义组件完成。以下是几种常见实现方式: 使用纯 CSS 和 Vue 过渡 通过 Vue 的过渡系统结合 CS…