温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

拦截器能做什么用

发布时间:2026-08-30 05:08:40 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

拦截器(Interceptor)是一种在请求/响应到达目标之前或之后进行“拦截处理”的机制,不同技术栈中用途略有差异,但核心思想一致:在不修改原始逻辑的前提下,统一增强、控制或监控流程

下面按常见场景说明它能“做什么用”。


一、拦截器常见用途(通用)

✅ 1. 统一身份认证 / 权限校验

拦截请求,判断是否登录或是否有权限访问

  • 校验 Token / Session
  • 校验接口权限(如管理员接口)
  • 未登录自动跳转登录页或返回 401

例子(后端)

if (!hasLogin(request)) {
    response.sendRedirect("/login");
    return;
}

例子(前端 Axios)

axios.interceptors.request.use(config => {
  config.headers.Authorization = getToken();
  return config;
});

✅ 2. 统一处理请求 / 响应数据

在请求发出前或响应返回后自动处理数据

常见场景:

  • 自动加 token
  • 统一加 Content-Type
  • 统一解析响应格式
  • 自动解密 / 解包
axios.interceptors.response.use(
  res => res.data,
  err => Promise.reject(err)
);

✅ 3. 日志记录与监控

记录请求耗时、参数、来源 IP 等

用途:

  • 接口访问日志
  • 性能监控
  • 行为审计
long start = System.currentTimeMillis();
// 执行目标方法
long cost = System.currentTimeMillis() - start;
log.info("接口耗时: {}ms", cost);

✅ 4. 异常处理 / 全局错误兜底

统一捕获异常,避免重复 try-catch

  • 返回统一错误结构
  • 前端统一弹窗提示
  • 接口降级
try {
    return invocation.proceed();
} catch (Exception e) {
    return Result.error("系统异常");
}

✅ 5. 请求参数校验 / 修改

在真正执行业务前校验或修正参数

  • 参数脱敏
  • 非法字符过滤
  • 自动补充默认参数

✅ 6. 防重复提交 / 幂等控制

拦截短时间内的重复请求

  • 使用 token + redis
  • 接口加锁
  • 防止表单重复提交

✅ 7. 多语言 / 多租户支持

根据请求自动切换环境

  • 设置语言上下文
  • 切换数据源
  • 设置租户 ID

二、不同技术栈中的拦截器

1️⃣ 前端(Axios 拦截器)

axios.interceptors.request.use(...)
axios.interceptors.response.use(...)

✅ 用于:

  • token 注入
  • 统一错误处理
  • loading 控制

2️⃣ Spring(Interceptor / Filter)

类型 作用范围
Filter Servlet 层
Interceptor Spring MVC 层
AOP 方法层

✅ 常用于:

  • 登录拦截
  • 权限校验
  • 接口日志

3️⃣ MyBatis 拦截器

用于:

  • SQL 日志
  • 分页
  • 数据加解密
  • 自动填充字段(如 create_time

4️⃣ RPC / 微服务(如 Dubbo、Feign)

用于:

  • 调用链追踪
  • 限流
  • 熔断
  • 灰度发布

三、拦截器 vs 过滤器 vs AOP(简单对比)

对比项 拦截器 过滤器 AOP
层级 MVC Servlet 方法
精细度
是否依赖框架
常见用途 权限、日志 编码、跨域 事务、缓存

四、一句话总结

拦截器用来“在请求或方法执行前后,统一做事情”,是解耦、增强、控制流程的利器。

如果你愿意,可以告诉我:

  • 你用的是 前端 / 后端 / 哪个框架
  • 想解决 具体问题

我可以直接给你可落地的拦截器示例

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI