当前位置:首页 > VUE

vue实现拦截器

2026-01-20 16:11:26VUE

Vue 拦截器实现方法

在 Vue 中,拦截器通常用于在 HTTP 请求或响应被处理前进行统一操作,例如添加认证信息、错误处理等。以下是几种常见的拦截器实现方式:

使用 Axios 拦截器

Axios 是 Vue 生态中常用的 HTTP 客户端,支持请求和响应拦截器。

安装 Axios:

vue实现拦截器

npm install axios

创建拦截器示例:

import axios from 'axios';

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 在发送请求前添加 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    // 统一处理错误响应
    if (error.response.status === 401) {
      // 跳转到登录页
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

Vue Router 导航守卫

Vue Router 提供了全局前置守卫(beforeEach)和全局后置钩子(afterEach),可用于拦截路由跳转。

vue实现拦截器

import router from './router';

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

Vue 自定义指令拦截

通过自定义指令实现对 DOM 操作的拦截。

Vue.directive('permission', {
  inserted: function (el, binding) {
    const hasPermission = checkPermission(binding.value);
    if (!hasPermission) {
      el.parentNode.removeChild(el);
    }
  }
});

组合式 API 拦截

在 Vue 3 中,可以使用组合式 API 实现更灵活的拦截逻辑。

import { onBeforeMount } from 'vue';

export default {
  setup() {
    onBeforeMount(() => {
      const isAuth = localStorage.getItem('token');
      if (!isAuth) {
        router.push('/login');
      }
    });
  }
};

注意事项

  • 拦截器应避免阻塞主流程,确保逻辑简洁高效。
  • 错误处理需全面,避免未捕获的异常影响用户体验。
  • 对于敏感操作,应结合后端验证,前端拦截仅作为辅助手段。

标签: 拦截器vue
分享给朋友:

相关文章

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vue…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…

vue实现多线程

vue实现多线程

Vue.js 本身是单线程框架,但可以通过以下方法实现类似多线程的效果或利用浏览器多线程能力: 使用 Web Worker Web Worker 是浏览器提供的多线程 API,适合处理 CPU 密集…

vue实现销售程序

vue实现销售程序

Vue实现销售程序的基本步骤 搭建Vue项目基础结构 使用Vue CLI或Vite初始化项目,安装必要依赖(如Vue Router、Vuex/Pinia、Element UI/Ant Design V…