当前位置:首页 > 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中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue toast实现

vue toast实现

Vue Toast 实现方法 使用第三方库(推荐) 安装 vue-toastification 库,这是一个功能丰富且轻量级的 Vue Toast 插件。 npm install vue-toast…

vue实现CRUD

vue实现CRUD

Vue 实现 CRUD 操作 Vue 提供了响应式数据绑定和组件化开发能力,结合后端 API 可以轻松实现 CRUD(增删改查)功能。以下是基于 Vue 3 和 Axios 的完整实现方案。 安装依…