用途:这是一份 Auth.js v5(NextAuth 后继版本)的深度实践技能,面向 Next.js 16.1.1 App Router、React 19.2 Server Actions 与 Edge Runtime 环境,帮助在 Server Components、Client Components、Middleware 和 Server Actions 间构建统一会话架构。
主要能力:
- 双配置模式:将 Edge 兼容逻辑放入 auth.config.ts(不引入数据库适配器或重型 Node 库),在 auth.ts 中导入该配置并加入 Prisma/Drizzle 适配器,避免 Edge Runtime 的模块解析错误。
- 通用 auth():在 RSC 与 Server Actions 中统一读取会话;客户端使用 next-auth/react 的 useSession(需包裹 SessionProvider)。
- 路由保护:通过 middleware.ts 与 authorized 回调控制访问,并提供 matcher 排除静态资源。
- Server Actions 登录:结合 signIn 与 AuthError 处理凭证错误。
- 类型扩展与角色:扩展 Session 类型,通过 jwt 与 session 回调注入 id、role。
- 数据库集成:给出 Prisma 与 Drizzle 的用户/账户 schema 示例。
- MFA 思路:用 JWT 标记 mfa_required / mfa_verified 并在中间件中重定向。
- 测试:Vitest 模拟 auth 函数、Playwright 端到端登录流程。
用法要点:安装依赖 bun add next-auth@beta @auth/prisma-adapter;配置 AUTH_SECRET 与提供商凭证;创建 app/api/auth/[...nextauth]/route.ts 导出 handlers;session 策略需使用 jwt 以兼容 Edge。常见错误包括误用 getServerSession、使用已弃用的 NEXTAUTH_URL、在中间件中使用 Prisma、仅做客户端校验、泄露密钥、忽视 CSRF。
限制:资料未提供具体收费、价格、平台支持范围与性能数据;MFA 需自行实现,无开箱即用方案;版本信息以资料所述为准。