从 NextAuth.js迁移到Better Auth
在本文中,我们将介绍从 NextAuth.js 迁移到 Better Auth 的步骤,确保不会丢失数据或功能。虽然本指南主要针对 Next.js,但也可以应用于其他框架。
开始之前
在开始迁移过程之前,请在你的项目中设置 Better Auth。按照安装指南开始。
映射现有列
你可以将现有数据库列名映射到 Better Auth 的预期结构,而不必修改它们。这允许你保留当前的数据库模式。
用户模式
你现有的用户模式可能与 Better Auth 兼容,因此不需要更改。
会话模式
在会话模式中映射以下字段:
expires
→expiresAt
sessionToken
→token
确保你的会话模式上有 createdAt
和 updatedAt
字段。
账户模式
在账户模式中映射这些字段:
providerAccountId
→accountId
refresh_token
→refreshToken
access_token
→accessToken
access_token_expires
→accessTokenExpiresAt
id_token
→idToken
移除 session_state
、type
和 token_type
字段,因为 Better Auth 不需要它们。
注意: 如果你使用 ORM 适配器,可以在模式文件中映射这些字段。
使用 Prisma 的示例:
确保你的账户模式上有 createdAt
和 updatedAt
字段。
更新路由处理器
在 app/api/auth
文件夹中,将 [...nextauth]
文件重命名为 [...all]
以避免混淆。然后,按如下方式更新 route.ts
文件:
更新客户端
在 lib
文件夹中创建一个名为 auth-client.ts
的文件。添加以下代码:
社交登录函数
更新你的社交登录函数以使用 Better Auth。例如,对于 Discord:
更新 useSession
调用
将 useSession
调用替换为 Better Auth 的版本。示例:
中间件
要使用中间件保护路由,请参阅 Next.js 中间件指南。
总结
恭喜!你已成功从 NextAuth.js 迁移到 Better Auth。有关包含多种认证方法的完整实现,请查看演示仓库。
Better Auth 提供更大的灵活性和更多功能——务必浏览文档以充分发挥其潜力。