当前位置:首页 > 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 实现持久化存储。

vue实现登录保存token

// 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 添加到请求头中。

vue实现登录保存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。

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 实现帖子功能需要结合前端框架和后端数据交互,以下是实现的关键步骤和代码示例。 帖子列表展示 创建帖子列表组件,使用 v-for 渲染帖子数据,通过 axios 获…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

vue实现handsontable

vue实现handsontable

Vue 中实现 Handsontable 要在 Vue 项目中集成 Handsontable,可以使用官方提供的 @handsontable/vue 封装库。以下是一个完整的实现步骤。 安装依赖 确…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template>…