Anonymous
匿名插件允许用户在无需提供电子邮件地址、密码、OAuth 提供商或任何其他个人可识别信息 (PII) 的情况下获得认证体验。用户可以在准备好时将认证方法链接到其账户。
安装
将插件添加到您的认证配置中
要启用匿名认证,请将匿名插件添加到您的认证配置中。
import { betterAuth } from "better-auth"
import { anonymous } from "better-auth/plugins"
export const auth = betterAuth({
// ... other config options
plugins: [
anonymous()
]
})迁移数据库
运行迁移或生成架构,以向数据库添加必要的字段和表。
npx @better-auth/cli migratenpx @better-auth/cli generate请参阅 Schema 部分以手动添加字段。
添加客户端插件
接下来,将匿名客户端插件包含在您的认证客户端实例中。
import { createAuthClient } from "better-auth/client"
import { anonymousClient } from "better-auth/client/plugins"
export const authClient = createAuthClient({
plugins: [
anonymousClient()
]
})使用
登录
要匿名登录用户,请使用 signIn.anonymous() 方法。
const user = await authClient.signIn.anonymous()链接账户
如果用户已经匿名登录并尝试使用其他方法进行 signIn 或 signUp,则他们的匿名活动可以链接到新账户。
为此,您首先需要向插件提供 onLinkAccount 回调。
import { betterAuth } from "better-auth"
export const auth = betterAuth({
plugins: [
anonymous({
onLinkAccount: async ({ anonymousUser, newUser }) => {
// perform actions like moving the cart items from anonymous user to the new user
}
})
]然后,当您使用其他方法调用 signIn 或 signUp 时,将调用 onLinkAccount 回调。默认情况下,anonymousUser 将被删除。
const user = await authClient.signIn.email({
email,
})选项
emailDomainName:生成匿名用户电子邮件地址时使用的域名。默认为当前站点的域名。
import { betterAuth } from "better-auth"
export const auth = betterAuth({
plugins: [
anonymous({
emailDomainName: "example.com"
})
]
})-
onLinkAccount:当匿名用户将他们的账户链接到新认证方法时调用的回调函数。该回调接收一个包含anonymousUser和newUser的对象。 -
disableDeleteAnonymousUser:默认情况下,当账户链接到新认证方法时,匿名用户将被删除。将此选项设置为true以禁用此行为。 -
generateName:用于为匿名用户生成名称的回调函数。如果您希望匿名用户具有随机名称,或者您的数据库中的name是唯一的,则此函数很有用。
Schema
匿名插件需要在用户表中添加一个额外字段:
| Field Name | Type | Key | Description |
|---|---|---|---|
| isAnonymous | boolean | 指示用户是否为匿名用户。 |