用途:当用户要求添加认证、登录、注册、OAuth 或会话管理时,使用该技能为 Web 应用接入认证,基于 NextAuth.js(Auth.js)。
主要能力:支持 OAuth 提供商(示例含 GitHub、Google);提供会话管理与受保护路由;可通过数据库适配器实现持久化会话或用户记录(可选)。
使用方式:
- 安装依赖:npm install next-auth@beta
- 生成密钥:npx auth secret(会向 .env.local 添加 AUTH_SECRET)
- 在项目根目录创建 auth.ts,导入 NextAuth 及提供商并导出 handlers、signIn、signOut、auth
- 添加路由处理器:创建 app/api/auth/[...nextauth]/route.ts,从 @/auth 导入 handlers 并导出 GET、POST
- 为每个提供商添加环境变量,如 AUTH_SECRET、AUTH_GITHUB_ID、AUTH_GITHUB_SECRET、AUTH_GOOGLE_ID、AUTH_GOOGLE_SECRET
- 添加登录/登出界面:调用 signIn、signOut 服务端操作,或使用 <Link href="/api/auth/signin">
- 保护路由:在服务端组件或中间件中使用 auth(),无 session 时重定向(如 redirect("/api/auth/signin"))
- 可选:如需持久化会话或用户记录,安装数据库适配器(如 @auth/drizzle-adapter、@auth/prisma-adapter)并在 auth 配置中启用
适用场景:Next.js 应用需要接入登录、注册、OAuth 或会话管理时。
限制与注意事项:Auth.js v5 原生适配 Next.js App Router 与 Server Actions;Pages Router 需在 getServerSideProps 中使用 getServerSession,客户端使用 useSession;生产部署需添加 NEXTAUTH_URL;会话中只保存最少用户数据,需要完整资料时从数据库获取。资料未提供具体收费、价格或效果信息。