使用App Router和中间件的Next.js 15身份验证

使用App Router和中间件的Next.js 15身份验证

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

本文介绍了如何在Next.js 15中使用App Router、middleware和NextAuth.js进行身份验证,包括文件结构、身份验证配置、类型定义和中间件实现,以确保安全的用户登录、JWT令牌刷新和会话管理。

🎯

关键要点

  • 本文介绍了如何在Next.js 15中使用App Router、middleware和NextAuth.js进行身份验证。
  • 文件结构包括auth、dashboard、api、middleware和lib等目录。
  • 身份验证设置在/app/api/auth/[...nextauth]/route.ts中,使用从/lib/auth.ts导入的处理程序。
  • 身份验证配置在/lib/auth.ts中,定义了NextAuth选项,包括凭证提供者、JWT/会话回调和错误处理。
  • 类型定义在/lib/next-auth.d.ts中,扩展了NextAuth类型以包括自定义用户数据。
  • 中间件在/middleware/middleware.ts中实现,保护私有路由并检查用户是否经过身份验证。
  • 会话提供者在/app/provider.tsx中实现,使会话数据在所有客户端组件中可访问。
  • 根布局在/app/layout.tsx中设置,包含全局提供者和应用程序的基础结构。
  • 客户端组件示例使用useSession钩子获取和显示用户会话数据。
  • 服务器组件示例使用auth()获取会话,未认证用户重定向到登录页面。
  • 关键特性包括凭证身份验证、令牌刷新、受保护路由、类型安全和会话访问。
  • 实现注意事项包括正确配置环境变量,特别是NEXTAUTH_SECRET。
➡️

继续阅读