当前位置:首页 > VUE

vue自动登录实现

2026-01-15 00:47:27VUE

Vue 自动登录实现方法

使用 localStorage 或 sessionStorage 存储 token

在用户登录成功后,将 token 存储在 localStorage 或 sessionStorage 中。localStorage 数据持久化,sessionStorage 在浏览器关闭后清除。

// 登录成功后存储 token
localStorage.setItem('token', response.data.token);

在应用初始化时检查是否存在 token,存在则自动登录:

vue自动登录实现

created() {
  const token = localStorage.getItem('token');
  if (token) {
    this.autoLogin(token);
  }
}

使用 Vuex 管理登录状态

在 Vuex 中维护登录状态和用户信息,便于全局访问:

// store.js
state: {
  token: localStorage.getItem('token') || '',
  isAuthenticated: !!localStorage.getItem('token')
},
mutations: {
  setToken(state, token) {
    state.token = token;
    state.isAuthenticated = true;
    localStorage.setItem('token', token);
  },
  clearToken(state) {
    state.token = '';
    state.isAuthenticated = false;
    localStorage.removeItem('token');
  }
}

路由守卫实现自动登录

在路由跳转前检查登录状态,未登录但有 token 则尝试自动登录:

vue自动登录实现

// router.js
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('token');
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!store.state.isAuthenticated && token) {
      store.dispatch('autoLogin', token).then(() => {
        next();
      }).catch(() => {
        next('/login');
      });
    } else if (!store.state.isAuthenticated) {
      next('/login');
    } else {
      next();
    }
  } else {
    next();
  }
});

自动登录 API 请求

实现自动登录的 API 请求方法,验证 token 有效性:

// auth.js
autoLogin(token) {
  return axios.get('/api/auto-login', {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
}

记住我功能扩展

添加记住我选项,延长 token 有效期:

login() {
  if (this.rememberMe) {
    localStorage.setItem('token', token);
  } else {
    sessionStorage.setItem('token', token);
  }
}

安全注意事项

  • 使用 HTTPS 传输 token
  • 设置合理的 token 过期时间
  • 敏感操作需要重新验证密码
  • 考虑使用 refresh token 机制

完整示例代码

// 登录组件
methods: {
  handleLogin() {
    api.login(this.credentials).then(response => {
      const token = response.data.token;
      this.$store.commit('setToken', token);
      if (this.rememberMe) {
        localStorage.setItem('token', token);
      }
      this.$router.push('/dashboard');
    });
  }
}

标签: 自动登录vue
分享给朋友:

相关文章

vue如何实现到期提醒

vue如何实现到期提醒

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

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data: {…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue 实现挂载

vue 实现挂载

Vue 实现挂载的基本方法 在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程。通过挂载,Vue 可以管理 DOM 并实现数据绑定和响应式更新。 创建 Vue 实例并挂载 const…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…

vue核心实现

vue核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现原理的详细说明: 响应式系统 Vue 使用 Object.defineProper…