6.3
深览指数
科技Bestblogs·Aniket Bhattacharyea··AI 生成

在 Next.js 16 中使用 Server Actions 和 Middleware 处理身份验证

Auth0 的 Next.js SDK v4 针对 Next.js 16 进行了架构调整,用 proxy.ts 模式取代了传统路由处理程序,以更好地适配服务器优先架构。文章详细对比了在 Server Components、Server Actions 和 API 路由中访问会话的差异,并给出了页面级、布局级和 proxy 级的三种路由保护策略。适合正在使用或计划迁移到 Next.js 16 的开发者,能帮其快速理解新 SDK 的核心变化与最佳实践。原文 ↗

核心观点
  • Auth0 SDK v4 通过 proxy.ts 文件与 Next.js 16 的服务器优先架构对齐,替代了手动创建 API 路由处理程序(如 pages/api/auth/[auth0].ts)的方式。
  • 开发者在 Server Components、Server Actions 和 API 路由中访问会话的方式不同,其中 Server Actions 因独立执行上下文而需要显式重新验证用户会话。
  1. 01proxy.ts 文件在应用的路由中间件之前拦截请求,自动挂载 Auth0 端点,如 /auth/login、/auth/callback 和 /auth/logout。
  2. 02在 Server Components 中,可通过 await auth0.getSession() 直接获取会话对象;在 API 路由中用法相同。
  3. 03Server Actions 是独立的执行上下文,即使初始渲染时用户已登录,执行 Action 时也可能因会话过期、账户切换等原因导致凭证失效,因此每次调用都应重新验证。
  4. 04路由保护有三种粒度:页面级(使用 middleware.ts 或直接检查 Session)、布局级(在 Root Layout 中统一校验)、以及 proxy 级(在 proxy.ts 中配置 protectRoutes 选项)。
  5. 05proxy 级保护使用 protectRoutes: true 或特定路径模式,但处理混合公开/私有路由时灵活性较低,需配合 middleware 或页面级校验。
  6. 06安全注意事项包括:定期轮换 AUTH0_* 密钥(轮换会使现有 Cookie 失效);Auth0 仪表盘中的回调 URL、登出 URL 和允许的 Web 源必须与部署环境一致;切勿将 AUTH0_CLIENT_SECRET 等密钥暴露给客户端代码。
反方 / 局限
  • 文章未讨论 proxy.ts 模式与现有自定义中间件(如国际化、重定向)的兼容性问题,以及 proxy 级保护在大型应用中的性能开销。
3 分钟 · 5 卡片 · 12 资料
读原文 →

前置背景

技术原理

平行视角

争议局限

延伸追问