当前位置:首页 > 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 实现视频开场动画 在 Vue 中实现视频开场动画可以通过结合 HTML5 的 <video> 标签和 Vue 的过渡效果或生命周期钩子来完成。以下是具体实现方法: 安装依赖…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…

vue组件实现

vue组件实现

Vue 组件实现基础 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。组件的实现包括定义、注册、数据传递和生命周期管理等。 定义组件 组件可以通过单文件组件(…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…