当前位置:首页 > 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.js实现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 可以增加安全性,但需根据应用需求权衡。

标签: vuejs
分享给朋友:

相关文章

vue滑块实现

vue滑块实现

Vue滑块实现方法 使用原生HTML5 range input Vue中可以绑定原生HTML5的range类型input元素实现基础滑块功能: <template> <div&…

vue实现首页

vue实现首页

Vue 实现首页的基本步骤 安装 Vue.js 和相关依赖,可以通过 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代前端开发。 npm instal…

vue日历实现

vue日历实现

实现基础日历布局 使用Vue的模板语法构建日历的基本HTML结构。一个典型的日历包含星期标题和日期格子,可以通过v-for循环生成。月份切换功能通过计算属性动态更新日期数组。 <templat…

vue实现登录拦截

vue实现登录拦截

实现登录拦截的方法 在Vue项目中,可以通过路由守卫(Navigation Guards)实现登录拦截,确保未登录用户无法访问受保护的路由。以下是具体实现方式: 使用全局前置守卫 在路由配置文件中(…

vue 实现点击选中

vue 实现点击选中

实现点击选中效果 在Vue中实现点击选中效果可以通过多种方式完成,以下是几种常见的方法: 方法一:使用v-bind和v-on 通过绑定class和监听click事件来实现选中状态切换。 <…

vue cli实现原理

vue cli实现原理

Vue CLI 实现原理 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,其核心实现原理可以分为以下几个部分: 核心架构 Vue CLI 采用插件化架构,通过 @vue/cli 提…