基本用法
Better Auth提供内置的身份验证支持:
- 邮箱和密码
- 社交提供商(谷歌、GitHub、苹果等)
同时也可以通过插件轻松扩展,例如:用户名、魔法链接、通行密钥、邮箱一次性密码等。
邮箱和密码
要启用邮箱和密码认证:
注册
要注册用户,你需要调用客户端方法 signUp.email
并提供用户信息。
默认情况下,用户成功注册后会自动登录。要禁用此行为,可以将 autoSignIn
设置为 false
。
登录
要登录,你可以使用客户端提供的 signIn.email
函数。
要始终从浏览器端调用better-auth提供的客户端方法。不要从服务器调用它们。
服务器端认证
要在服务器上认证用户,你可以使用 auth.api
方法。
如果服务器无法返回响应对象,你需要手动解析并设置cookie。但对于像Next.js这样的框架,我们提供了插件来自动处理这个问题。
社交登录
Better Auth提供多种社交登录,包括谷歌、GitHub、苹果、Discord等。要启用它们,你需要在auth
对象的socialProviders
选项中配置你需要的社交认证方式。
使用社交方式登录
要使用社交方式登录,你需要调用signIn.social
。它接受一个具有以下属性的对象:
你也可以使用社交认证提供的idToken
或accessToken
进行认证,而不是将用户重定向到认证网站。有关更多详细信息,请参阅社交认证公司提供的技术文档。
退出登录
要退出用户登录,你可以使用客户端提供的signOut
函数。
你可以传递fetchOptions
在成功时重定向
会话
一旦用户登录,你可能需要获取用户会话。Better Auth允许你轻松地从服务器和客户端访问会话数据。
客户端
使用会话
Better Auth提供了一个useSession
钩子,可以在客户端轻松访问会话数据。这个钩子使用nanostore实现,并支持每个支持的框架和原生客户端,确保会话的任何变化(如退出登录)立即反映在你的UI中。
获取会话
如果你不想使用钩子方式,你可以使用客户端提供的getSession
方法。
你也可以将其与客户端数据获取库一起使用,如TanStack Query。
服务器端
服务器提供了一个session
对象,你可以用它来访问会话数据。它需要将请求头对象传递给getSession
方法。
示例:使用一些流行的框架
有关更多详细信息,请查看会话管理文档。
使用插件
Better Auth的独特功能之一是插件生态系统。它允许你通过少量代码添加复杂的认证相关功能。
下面是一个使用双因素插件添加双因素认证的示例。