当前位置:首页 > VUE

vue实现登录保存token

2026-01-20 00:56:23VUE

Vue 中实现登录保存 Token

使用 localStorage 保存 Token

登录成功后,将 Token 存储在 localStorage 中,便于页面刷新后仍能保持登录状态。

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

localStorage 中获取 Token 并验证用户是否登录。

// 获取 Token
const token = localStorage.getItem('token');
if (!token) {
  // 未登录,跳转到登录页
  router.push('/login');
}

使用 Vuex 管理 Token

在 Vuex 中定义状态管理 Token,结合 localStorage 实现持久化存储。

// store.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    token: localStorage.getItem('token') || ''
  },
  mutations: {
    setToken(state, token) {
      state.token = token;
      localStorage.setItem('token', token);
    },
    clearToken(state) {
      state.token = '';
      localStorage.removeItem('token');
    }
  },
  actions: {
    login({ commit }, token) {
      commit('setToken', token);
    },
    logout({ commit }) {
      commit('clearToken');
    }
  }
});

在组件中调用 Vuex 的 actions 进行登录和登出操作。

// 登录
this.$store.dispatch('login', response.data.token);

// 登出
this.$store.dispatch('logout');

使用 Axios 拦截器自动携带 Token

通过 Axios 拦截器,在每次请求时自动将 Token 添加到请求头中。

// axios 配置
import axios from 'axios';

axios.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

路由守卫验证登录状态

使用 Vue Router 的全局前置守卫,验证用户是否已登录,未登录则跳转到登录页。

// router.js
import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

const router = new Router({
  routes: [
    // 路由配置
  ]
});

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

export default router;

处理 Token 过期

在 Axios 响应拦截器中检查 Token 是否过期,过期则跳转到登录页。

axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response.status === 401) {
      // Token 过期或无效,跳转到登录页
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

使用 Cookie 保存 Token(可选)

如果需要更安全的存储方式,可以使用 js-cookie 库将 Token 存入 Cookie。

vue实现登录保存token

import Cookies from 'js-cookie';

// 保存 Token
Cookies.set('token', response.data.token, { expires: 7 }); // 7天后过期

// 获取 Token
const token = Cookies.get('token');

// 删除 Token
Cookies.remove('token');

标签: vuetoken
分享给朋友:

相关文章

vue路由实现内部切换

vue路由实现内部切换

Vue 路由实现内部切换的方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-lin…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue实现报表

vue实现报表

vue实现报表的方法 使用Vue实现报表通常需要结合图表库或表格组件。以下是几种常见方法: 使用ECharts 安装ECharts库: npm install echarts vue-echart…

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于需…

vue实现 treegrid

vue实现 treegrid

Vue 实现 TreeGrid 的方法 使用现成组件库 Element UI、Ant Design Vue 等流行组件库提供了现成的 TreeTable/TreeGrid 组件,可直接使用。 Ele…

vue 实现templateurl

vue 实现templateurl

在 Vue 中,templateUrl 是 Angular 中的一个概念,用于指定外部 HTML 文件作为模板。Vue 本身不直接支持 templateUrl,但可以通过以下方法实现类似功能: 使用…