当前位置:首页 > VUE

vue怎么实现登录持久

2026-01-21 02:32:14VUE

Vue 实现登录持久化的方法

使用 localStorage 或 sessionStorage 存储 token

通过 localStoragesessionStorage 存储用户的登录凭证(如 token),在页面刷新后依然可以读取。localStorage 数据长期保存,sessionStorage 仅在当前会话有效。

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

// 在应用初始化时检查 token
const token = localStorage.getItem('token');
if (token) {
  // 设置请求头或恢复登录状态
  axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
}

结合 Vuex 管理登录状态

在 Vuex 中存储登录状态,同时配合 localStorage 实现持久化。通过 Vuexpersistedstate 插件可以自动同步状态到 localStorage

import Vuex from 'vuex';
import createPersistedState from 'vuex-persistedstate';

const store = new Vuex.Store({
  state: {
    user: null,
    token: null
  },
  mutations: {
    setUser(state, payload) {
      state.user = payload.user;
      state.token = payload.token;
    }
  },
  plugins: [createPersistedState()]
});

使用 Cookie 存储 token

通过 js-cookie 库可以方便地操作 Cookie,适合需要后端验证的场景。

import Cookies from 'js-cookie';

// 登录成功后设置 Cookie
Cookies.set('token', response.data.token, { expires: 7 }); // 7天后过期

// 初始化时检查 Cookie
const token = Cookies.get('token');
if (token) {
  // 恢复登录状态
}

路由守卫检查登录状态

在 Vue Router 的全局前置守卫中检查登录状态,未登录则跳转到登录页。

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token') !== null;
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');
  } else {
    next();
  }
});

后端配合实现 token 刷新

通过定期刷新 token 或检查 token 有效性,确保用户长时间保持登录状态。

vue怎么实现登录持久

// 示例:定时刷新 token
setInterval(() => {
  if (localStorage.getItem('token')) {
    axios.post('/refresh-token').then(response => {
      localStorage.setItem('token', response.data.token);
    });
  }
}, 30 * 60 * 1000); // 每30分钟刷新一次

总结

Vue 实现登录持久化通常需要结合前端存储(localStorageCookie)和状态管理(Vuex),并通过路由守卫控制访问权限。后端配合 token 刷新机制可以进一步提升用户体验。

标签: 持久vue
分享给朋友:

相关文章

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue实现RTMP

vue实现RTMP

Vue 中实现 RTMP 流播放 RTMP(Real-Time Messaging Protocol)是一种用于实时音视频流传输的协议。在 Vue 中实现 RTMP 播放通常需要借助第三方库或播放器。…

vue实现增加

vue实现增加

实现 Vue 中的新增功能 在 Vue 中实现新增功能通常涉及数据绑定、表单处理和状态管理。以下是几种常见的实现方式: 数据绑定与列表渲染 通过 v-model 绑定表单输入,使用数组的 push…

vue 实现vshow

vue 实现vshow

Vue 实现 v-show 在 Vue 中,v-show 是一个常用的指令,用于根据条件控制元素的显示或隐藏。与 v-if 不同,v-show 不会移除 DOM 元素,而是通过 CSS 的 displ…

vue实现rgb调色

vue实现rgb调色

Vue实现RGB调色功能 实现思路 通过Vue的数据绑定和事件处理,动态调整RGB三个通道的值,实时更新显示颜色。 核心代码示例 <template> <div…

vue实现登录权限

vue实现登录权限

Vue 实现登录权限方案 路由守卫控制访问权限 安装vue-router并配置路由守卫,在全局前置守卫中检查用户登录状态和权限。未登录用户访问受限路由时重定向到登录页。 // router.js r…