当前位置:首页 > 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 实现单点登录(SSO)方案 单点登录(SSO)允许用户在多个相关但独立的系统中使用同一组凭证登录。以下是基于 Vue 的实现方案: 基于 OAuth2/OpenID Connect 的实现…

vue菜单实现

vue菜单实现

Vue 菜单实现方法 使用 Element UI 的菜单组件 Element UI 提供了现成的菜单组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用 el-menu 相关组件。…

vue实现frame

vue实现frame

Vue 中实现 iframe 的方法 在 Vue 中可以通过直接使用 <iframe> 标签或动态绑定 src 属性来实现 iframe 功能。 基本用法 <template&g…

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue监听实现

vue监听实现

Vue 监听实现方法 在 Vue 中可以通过多种方式实现监听数据变化或事件触发,以下是常见的几种方法: 使用 watch 选项 watch 是 Vue 提供的核心功能之一,用于观察和响应 Vue 实…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…