当前位置:首页 > 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

vue怎么实现登录持久

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,适合需要后端验证的场景。

vue怎么实现登录持久

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 有效性,确保用户长时间保持登录状态。

// 示例:定时刷新 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 实现滑动效果 使用 CSS 过渡和动画 通过 Vue 的 transition 组件结合 CSS 过渡或动画实现滑动效果。适用于简单的元素入场/离场滑动。 <template>…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export default…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

vue实现抽屉

vue实现抽屉

Vue 实现抽屉组件 抽屉组件是一种常见的 UI 模式,通常用于从屏幕边缘滑出内容。以下是几种实现抽屉的方法: 使用 Vue 原生实现 创建一个基本的抽屉组件,利用 Vue 的过渡和条件渲染功能。…

vue实现treetable

vue实现treetable

Vue实现TreeTable的方法 使用第三方组件库(如Element UI) Element UI的el-table组件支持树形表格展示,通过设置row-key和tree-props属性即可实现。…