当前位置:首页 > VUE

vue实现记住密码

2026-03-08 08:37:09VUE

实现记住密码功能

在Vue中实现记住密码功能通常涉及以下步骤,结合前端存储和后端验证:

vue实现记住密码

使用localStorage存储登录信息

// 登录成功后存储信息
handleLogin() {
  axios.post('/api/login', this.form).then(res => {
    if (this.rememberMe) {
      localStorage.setItem('username', this.form.username)
      localStorage.setItem('password', this.form.password)
      localStorage.setItem('rememberMe', true)
    } else {
      localStorage.removeItem('username')
      localStorage.removeItem('password')
      localStorage.removeItem('rememberMe')
    }
  })
}

页面加载时自动填充

mounted() {
  if (localStorage.getItem('rememberMe') === 'true') {
    this.form.username = localStorage.getItem('username') || ''
    this.form.password = localStorage.getItem('password') || ''
    this.rememberMe = true
  }
}

安全增强方案

对于更安全的实现,建议只存储用户名和记住状态,密码应该只在会话期间保留:

vue实现记住密码

// 安全版本
handleLogin() {
  axios.post('/api/login', this.form).then(res => {
    if (this.rememberMe) {
      localStorage.setItem('username', this.form.username)
      localStorage.setItem('rememberMe', true)
    } else {
      localStorage.removeItem('username')
      localStorage.removeItem('rememberMe')
    }
  })
}

使用vuex-persistedstate持久化状态

安装插件后配置:

import createPersistedState from 'vuex-persistedstate'

export default new Vuex.Store({
  plugins: [
    createPersistedState({
      storage: window.localStorage,
      paths: ['auth']
    })
  ],
  state: {
    auth: {
      username: '',
      rememberMe: false
    }
  }
})

结合Cookie实现自动登录

后端应返回带有HttpOnly标志的安全Cookie:

axios.post('/api/login', {
  username: this.username,
  password: this.password,
  remember: this.rememberMe
}).then(response => {
  // 后端应设置长期有效的Cookie
})

安全注意事项

  1. 避免明文存储密码,即使在前端也应考虑加密
  2. 敏感信息不应长期存储在localStorage中
  3. 确保使用HTTPS协议传输凭证
  4. 实现自动登出机制,设置合理的会话有效期
  5. 考虑使用refresh token机制替代长期存储密码

完整组件示例

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

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      },
      rememberMe: false
    }
  },
  mounted() {
    this.rememberMe = localStorage.getItem('rememberMe') === 'true'
    if (this.rememberMe) {
      this.form.username = localStorage.getItem('username') || ''
    }
  },
  methods: {
    handleLogin() {
      // 登录逻辑
      if (this.rememberMe) {
        localStorage.setItem('username', this.form.username)
        localStorage.setItem('rememberMe', true)
      } else {
        localStorage.removeItem('username')
        localStorage.removeItem('rememberMe')
      }
    }
  }
}
</script>

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

相关文章

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心机制基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3)。以下是具体实现方法: 基于 Vue…

vue实现按卡片轮播

vue实现按卡片轮播

实现卡片轮播的基本思路 在Vue中实现卡片轮播可以通过结合v-for指令和动态样式绑定完成。核心是维护一个当前显示卡片的索引,通过CSS过渡效果实现平滑切换。 基础实现步骤 模板部分 使用v-for…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <templ…

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue实现triger

vue实现triger

在Vue中实现触发器(trigger)功能通常涉及自定义事件或DOM事件触发。以下是几种常见场景的实现方法: 自定义事件触发 通过$emit方法触发父组件中监听的自定义事件: // 子组件 thi…

vue实现slider

vue实现slider

Vue 实现 Slider 组件 使用 Vue 实现 Slider 组件可以通过原生开发或借助第三方库。以下是两种常见方法: 原生实现 Slider 创建一个基础的 Slider 组件,通过 v-m…