当前位置:首页 > VUE

vue实现token

2026-01-12 20:07:06VUE

Vue 中实现 Token 验证的步骤

安装必要的依赖
使用 axios 进行 HTTP 请求,vue-router 处理路由守卫,js-cookie 管理 Cookie。通过 npm 安装:

npm install axios vue-router js-cookie

配置 Axios 拦截器
在请求头中自动添加 Token,并在响应拦截器中处理 Token 过期或无效的情况:

// src/utils/request.js
import axios from 'axios';
import Cookies from 'js-cookie';

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
});

service.interceptors.request.use(
  config => {
    const token = Cookies.get('token');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

service.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    if (error.response.status === 401) {
      // Token 过期或无效,跳转到登录页
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

export default service;

登录逻辑与 Token 存储
用户登录成功后,将 Token 存储到 Cookie 或 localStorage,并跳转到主页:

// src/views/Login.vue
import Cookies from 'js-cookie';
import request from '@/utils/request';

export default {
  methods: {
    handleLogin() {
      request.post('/login', this.form)
        .then(res => {
          Cookies.set('token', res.token, { expires: 7 }); // 7 天过期
          this.$router.push('/');
        });
    }
  }
};

路由守卫验证 Token
通过全局前置守卫检查用户是否已登录,未登录则重定向到登录页:

// src/router/index.js
import router from './router';
import Cookies from 'js-cookie';

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

注销功能
清除 Token 并跳转到登录页:

vue实现token

// src/components/Logout.vue
import Cookies from 'js-cookie';

export default {
  methods: {
    handleLogout() {
      Cookies.remove('token');
      this.$router.push('/login');
    }
  }
};

关键注意事项

  • Token 安全:避免将 Token 存储在 localStorage 中以防止 XSS 攻击,优先使用 HttpOnly Cookie。
  • 过期处理:后端应返回 401 状态码,前端拦截后强制跳转登录页。
  • 刷新 Token:可通过定时任务或拦截器自动刷新 Token,减少用户重复登录。

标签: vuetoken
分享给朋友:

相关文章

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…

vue实现login

vue实现login

Vue 实现登录功能 在 Vue 中实现登录功能通常需要以下几个步骤: 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,包含用户名和密码输入框以及提交按钮。可以使用 Vue 的模板语法和双…

vue filter 实现

vue filter 实现

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

vue实现阻塞

vue实现阻塞

Vue 实现阻塞的方法 在 Vue 中实现阻塞操作通常涉及异步控制、状态管理或生命周期钩子的使用。以下是几种常见方法: 使用 async/await 处理异步阻塞 通过 async/await 可…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…