当前位置:首页 > VUE

vue.js实现token

2026-02-23 05:22:19VUE

Vue.js 中实现 Token 认证的方法

使用 localStorage 或 sessionStorage 存储 Token

在用户登录成功后,将服务器返回的 Token 存储在客户端的 localStorage 或 sessionStorage 中。localStorage 适合长期存储,sessionStorage 在浏览器关闭后自动清除。

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

在每次发送请求时,从存储中获取 Token 并添加到请求头中。

// 在请求拦截器中添加 Token
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('auth_token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

使用 Vuex 集中管理 Token 状态

在 Vuex 中定义 Token 的状态和操作,方便全局访问和管理。

// store.js
const store = new Vuex.Store({
  state: {
    token: null
  },
  mutations: {
    setToken(state, token) {
      state.token = token;
      localStorage.setItem('auth_token', token);
    },
    clearToken(state) {
      state.token = null;
      localStorage.removeItem('auth_token');
    }
  },
  actions: {
    login({ commit }, token) {
      commit('setToken', token);
    },
    logout({ commit }) {
      commit('clearToken');
    }
  }
});

在组件中通过 Vuex 的 action 和 mutation 操作 Token。

// 在组件中调用登录
this.$store.dispatch('login', response.data.token);

路由守卫验证 Token

使用 Vue Router 的路由守卫验证 Token,确保用户在访问受保护路由时已登录。

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

在路由配置中标记需要认证的路由。

{
  path: '/dashboard',
  component: Dashboard,
  meta: { requiresAuth: true }
}

Token 过期处理

在响应拦截器中检查 Token 是否过期,过期时跳转到登录页面或刷新 Token。

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      localStorage.removeItem('auth_token');
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

使用第三方库管理 Token

可以使用如 vue-authenticatevue-auth 等第三方库简化 Token 管理流程。这些库通常提供开箱即用的认证功能,包括 Token 存储、请求拦截和路由守卫。

// 使用 vue-auth 示例
Vue.use(require('@websanova/vue-auth'), {
  auth: require('@websanova/vue-auth/drivers/auth/bearer.js'),
  http: require('@websanova/vue-auth/drivers/http/axios.1.x.js'),
  router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'),
});

安全性注意事项

避免在客户端存储敏感信息,确保 Token 通过 HTTPS 传输。设置合理的 Token 过期时间,减少被滥用的风险。使用 HttpOnly 和 Secure 标志的 Cookie 存储 Token 可以增加安全性,但需根据应用需求权衡。

vue.js实现token

标签: vuejs
分享给朋友:

相关文章

vue实现皮肤切换

vue实现皮肤切换

实现皮肤切换的基本思路 在Vue中实现皮肤切换功能,通常涉及动态修改CSS变量或类名。核心是通过状态管理当前主题,并在组件中应用对应的样式。 使用CSS变量实现主题切换 CSS变量(自定义属性)是…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转效…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。…

vue实现同步

vue实现同步

Vue 实现同步的方法 在 Vue 中实现同步操作通常涉及数据绑定、状态管理和异步操作的处理。以下是几种常见的方法: 使用计算属性(Computed Properties) 计算属性基于响应式依赖进…

vue实现引导

vue实现引导

Vue 实现引导功能的方法 使用第三方库 推荐使用 driver.js 或 intro.js 这类专门为 Vue 设计的引导库。这些库提供了完整的 API 和样式,能够快速实现引导功能。 安装 dr…