当前位置:首页 > VUE

vue实现拦截器

2026-01-20 16:11:26VUE

Vue 拦截器实现方法

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

使用 Axios 拦截器

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

安装 Axios:

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),可用于拦截路由跳转。

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
分享给朋友:

相关文章

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const t…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm inst…

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDi…

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖…

vue实现节流

vue实现节流

vue实现节流的方法 在Vue中实现节流(throttle)功能,通常用于限制高频事件的触发频率,例如滚动、输入或按钮点击。以下是几种常见的实现方式: 使用Lodash的throttle函数 安装…