用途:该补丁帮助开发者在 Auth.js 项目中做出认证路径选择、避免安全敏感的提供商错误,并应用当前集成模式。修改受影响流程前应先阅读对应主题参考。
主要能力:提供参考索引,涵盖 Better Auth 过渡、提供商与认证、会话与框架、v5 迁移、适配器与安全。
方案选择:新项目优先 Better Auth;已有应用若需持续安全与紧急修复,或 Better Auth 缺少所需能力(如无数据库的无状态会话),则保留 Auth.js。迁移现有应用参考 NextAuth 迁移指南。
紧急兼容与安全修复:调试前先审计已安装包版本。@auth/sveltekit 升级到 1.11.1 或更高;next-auth v4 升级到 4.24.14 或显式配置 GitHub issuer;@auth/kysely-adapter 升级到 1.11.2 并安装 kysely@^0.28.15。
安全边界:跨提供商账号关联是安全边界。有数据库且多种认证方式时,后续登录可能按邮箱匹配关联到已有用户,需评估每个启用提供商的邮箱验证保证。
凭据失败处理:authorize 返回 null 时,内置页面流程会重定向并带 ?error=CredentialsSignin&code=credentials;表单操作和自定义服务端流程需捕获抛出的 CredentialsSignin。可子类化 CredentialsSignin 替换公开代码。
通行密钥:视为实验性。需 Node.js 20+、兼容数据库适配器及 Authenticator 表迁移、安装 @simplewebauthn/server@9.0.3,添加 Passkey 提供商并设 experimental.enableWebAuthn 为 true。自定义页面还需 @simplewebauthn/browser@9.0.1 并从 next-auth/webauthn 导入 signIn。
邮件认证:每个邮件类型提供商都需数据库适配器。Loops 需预先创建事务模板、使用区分大小写的 url 变量并配置 API 密钥与事务 ID。
OAuth 定制:profile() 返回额外持久化 User 字段,account() 增删 Account 字段,向内置提供商传窄范围嵌套覆盖,Auth.js 会深合并。Apple 不要用 RedirectProxyUrl。
适配器:本地适配器只需实现启用流程所需方法,官方分发适配器须实现完整 Adapter 接口。不要围绕 deleteUser 或 unlinkAccount 构建本地流程。
会话:依赖会话端点的防缓存头;数据库会话过期行被读取时会被删除;Express 中间件中一次性填充请求本地会话。
框架访问:Qwik 服务端用 event.sharedMap.get("session"),客户端用 useSession();SvelteKit 服务端用 event.locals.auth(),客户端从 @auth/sveltekit/client 导入;Express 用 getSession(req)。
Next.js 路由保护:Next.js 16 从 proxy.ts 导出 auth 为 proxy;旧版本保留 middleware.ts 与 middleware 导出。Pages Router API 路由不恢复服务端会话助手,需请求会话 REST 端点。
日志:提供自定义 logger 时,调试输出走 logger.debug,单独的 debug 选项会被忽略。
限制:通行密钥为实验性;部分升级与迁移细节需查阅对应参考;资料未提供价格、平台支持范围等额外信息。