用途:为 Next.js 14+ 应用提供身份认证方案,适合 App Router 项目、需要 OAuth 登录(GitHub、Google、Discord 等)、需要 Prisma 数据库会话、构建无服务器/边缘兼容认证的场景。若开发 Express.js API、需要 500+ 提供商策略、自定义认证流程或不用 Next.js,则应改用 Passport.js。
主要能力:支持 OAuth 提供商、凭据登录、JWT 与数据库两种会话策略,内置 CSRF 保护,原生集成 App Router,可与 tRPC 组合做权限校验,可用于中间件路由保护。
安装:npm install next-auth@beta @auth/prisma-adapter
基本用法:在根级 auth.ts 中调用 NextAuth 配置 adapter、session 策略(jwt 或 database)与 providers(GitHub、Google、Credentials 等),导出 handlers、auth、signIn、signOut;在 app/api/auth/[...nextauth]/route.ts 中导出 GET、POST;通过 AUTH_SECRET、AUTH_GITHUB_ID、AUTH_GITHUB_SECRET、AUTH_GOOGLE_ID、AUTH_GOOGLE_SECRET 等环境变量配置密钥,AUTH_SECRET 可用 openssl rand -base64 32 生成;服务端组件用 auth() 读取会话,客户端组件用 useSession();middleware.ts 中调用 auth 包裹函数做受保护路由重定向;自定义字段需在 types/next-auth.d.ts 扩展 Session、User、JWT 接口。
限制与注意事项:凭据提供商必须配合 JWT 策略使用,密码需用 argon2 或 bcrypt 哈希;不要在 JWT 中存放敏感数据;避免混用 v4 与 v5 写法;会话为空时检查 auth.ts 导出、AUTH_SECRET 与 Cookie,OAuth 回调错误需检查提供商凭据与回调 URL。具体版本、提供商清单与适配器细节以官方文档为准。