Next.js中间件实战:高效拦截与处理请求

Next.js中间件实战指南

Next.js 中间件(Middleware)详解与实战

什么是中间件

Next.js 中间件是一种在请求到达页面或 API 路由之前运行的函数,允许开发者拦截请求并执行自定义逻辑。中间件可以用于身份验证、日志记录、重定向、修改请求头等场景。中间件在 Next.js 12 中引入,运行在 Edge Runtime 上,提供低延迟和高性能。

中间件的工作原理

中间件在请求生命周期中处于前置位置,能够拦截所有请求。其执行顺序如下:

  1. 用户发起请求。
  2. 中间件拦截请求并执行自定义逻辑。
  3. 根据中间件的处理结果,请求可能被重定向、修改或继续传递到目标页面。
中间件的核心功能
  • 身份验证:检查用户是否登录,未登录则重定向到登录页。
  • 路由保护:限制某些路由的访问权限。
  • 请求头修改:添加或修改请求头。
  • A/B 测试:根据条件将用户分配到不同版本的页面。
  • 国际化:根据用户地理位置或语言偏好重定向到对应语言版本。
中间件的实现步骤

创建中间件文件 在 Next.js 项目的根目录或 src 目录下创建 middleware.jsmiddleware.ts 文件。该文件会自动生效,无需额外配置。

// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
  // 检查路径
  if (request.nextUrl.pathname.startsWith('/dashboard')) {
    // 模拟身份验证逻辑
    const isAuthenticated = request.cookies.get('authToken')?.value === 'valid';
    if (!isAuthenticated) {
      return NextResponse.redirect(new URL('/login', request.url));
    }
  }

  // 修改请求头
  const response = NextResponse.next();
  response.headers.set('x-custom-header', 'hello-world');
  return response;
}

配置中间件匹配规则 通过 config.matcher 指定中间

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值