匿名
Anonymous(匿名)插件允许用户在无需提供电子邮件地址、密码、OAuth 提供商或任何其他个人身份信息(PII)的情况下获得认证体验。用户可以在准备好后,随时为其账户关联一种认证方式。
安装
将插件添加到您的认证配置中
要启用匿名认证,请将 anonymous 插件添加到您的认证配置中。
import { betterAuth } from "better-auth"
import { anonymous } from "better-auth/plugins"
export const auth = betterAuth({
// ... 其他配置选项
plugins: [
anonymous()
]
})
迁移数据库
运行迁移或生成模式(schema),以将必要的字段和表添加到数据库中。
npx @better-auth/cli migrate
npx @better-auth/cli generate
请参阅 Schema(模式) 部分以手动添加字段。
添加客户端插件
接下来,在您的认证客户端实例中包含 anonymous 客户端插件。
import { createAuthClient } from "better-auth/client"
import { anonymousClient } from "better-auth/client/plugins"
export const authClient = createAuthClient({
plugins: [
anonymousClient()
]
})
使用方法
登录 (Sign In)
要匿名登录用户,请使用 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 }) => {
// 执行操作,例如将购物车商品从匿名用户转移到新用户
}
})
]
然后,当您使用其他方法调用 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
字段要求唯一,此功能会很有用。
数据库结构
匿名插件需要在用户表中添加一个额外的字段:
字段名称 | 类型 | Key | 描述 |
---|---|---|---|
isAnonymous | boolean | 标识用户是否为匿名用户。 |