当前位置:首页 > VUE

vue实现token

2026-03-07 03:11:33VUE

Vue 中实现 Token 认证

在 Vue 中实现 Token 认证通常涉及以下几个关键步骤:

安装必要的依赖

如果需要与后端 API 交互,可以安装 axios

npm install axios

登录获取 Token

在登录页面中,发送用户凭证到后端 API 并获取 Token:

import axios from 'axios';

const login = async (username, password) => {
  try {
    const response = await axios.post('/api/login', {
      username,
      password
    });
    const token = response.data.token;
    localStorage.setItem('token', token); // 存储 Token
    axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; // 设置请求头
    return token;
  } catch (error) {
    console.error('登录失败:', error);
    throw error;
  }
};

存储 Token

将 Token 存储在本地存储或 Vuex 中,以便后续请求使用:

// 使用 localStorage 存储
localStorage.setItem('token', token);

// 使用 Vuex 存储(需配置 Vuex)
store.commit('setToken', token);

发送 Token 的请求拦截

在每次请求中自动附加 Token:

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

路由守卫验证 Token

使用 Vue Router 的导航守卫保护需要认证的路由:

import router from './router';

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

注销清除 Token

在注销功能中清除 Token 并重置请求头:

const logout = () => {
  localStorage.removeItem('token');
  delete axios.defaults.headers.common['Authorization'];
  router.push('/login');
};

刷新 Token 逻辑(可选)

如果 Token 有过期时间,可以实现刷新 Token 的逻辑:

vue实现token

axios.interceptors.response.use(response => {
  return response;
}, async error => {
  if (error.response.status === 401 && !error.config._retry) {
    error.config._retry = true;
    const refreshToken = localStorage.getItem('refreshToken');
    const response = await axios.post('/api/refresh', { refreshToken });
    localStorage.setItem('token', response.data.token);
    error.config.headers.Authorization = `Bearer ${response.data.token}`;
    return axios(error.config);
  }
  return Promise.reject(error);
});

注意事项

  • 使用 localStorage 存储 Token 时需注意安全性,避免 XSS 攻击。
  • 对于敏感操作,建议使用短时效的 Token 并定期刷新。
  • 在生产环境中,建议启用 HTTPS 以确保 Token 传输安全。

标签: vuetoken
分享给朋友:

相关文章

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signatu…

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue登录实现

vue登录实现

Vue 登录实现 实现登录功能通常需要前端与后端配合,Vue 作为前端框架,主要负责表单处理、请求发送和状态管理。以下是常见的实现方式: 表单设计与数据绑定 使用 Vue 的 v-model 实现表…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现拖拉

vue实现拖拉

实现拖拽功能的基本步骤 在Vue中实现拖拽功能可以通过原生HTML5的拖放API或第三方库如vuedraggable完成。以下是两种方法的详细说明。 使用HTML5原生拖放API HTML5提供了原…

vue实现文章滚动

vue实现文章滚动

Vue 实现文章滚动效果 使用 CSS 实现基础滚动 通过 CSS 的 overflow 和 height 属性控制滚动区域,适用于静态内容滚动。在 Vue 模板中定义固定高度的容器,内容超出后自动滚…