跳至内容
从 NextAuth.js v4 迁移?请阅读 我们的迁移指南.

适配器

适配器

适配器是一个对象,具有函数属性(方法),用于从数据源读取和写入数据。将这些方法视为将数据层规范化为 Auth.js 可理解的通用接口的一种方式。

这就是使 Auth.js 非常灵活并允许它与任何数据层一起使用的原因。

适配器方法用于执行以下操作

  • 创建/更新/删除用户
  • 将帐户链接到/从用户链接/取消链接
  • 处理活动会话
  • 支持跨多个设备的无密码身份验证

如果未实现任何方法,但 Auth.js 调用了该方法,则会向用户显示错误,并且操作将失败。

方法

createAuthenticator()?

optional createAuthenticator(authenticator): Awaitable<AdapterAuthenticator>

创建一个新的身份验证器。

如果创建失败,适配器必须抛出错误。

参数
参数类型
authenticatorAdapterAuthenticator
返回值

Awaitable<AdapterAuthenticator>

createSession()?

optional createSession(session): Awaitable<AdapterSession>

为用户创建一个会话并返回它。

另请参见 数据库会话管理

参数
参数类型
session对象
session.expires日期
session.sessionToken字符串
session.userId字符串
返回值

Awaitable<AdapterSession>

createUser()?

optional createUser(user): Awaitable<AdapterUser>

在数据库中创建一个用户并返回它。

另请参见 用户管理

参数
参数类型
userAdapterUser
返回值

Awaitable<AdapterUser>

createVerificationToken()?

optional createVerificationToken(verificationToken): Awaitable<undefined | null | VerificationToken>

创建一个验证令牌并返回它。

另请参见 验证令牌

参数
参数类型
verificationTokenVerificationToken
返回值

Awaitable<undefined | null | VerificationToken>

deleteSession()?

optional deleteSession(sessionToken): Promise<void> | Awaitable<undefined | null | AdapterSession>

从数据库中删除会话。最好是此方法也返回要删除的会话,以用于记录目的。

另请参见 数据库会话管理

参数
参数类型
sessionToken字符串
返回值

Promise<void> | Awaitable<undefined | null | AdapterSession>

deleteUser()?

optional deleteUser(userId): Promise<void> | Awaitable<undefined | null | AdapterUser>
参数
参数类型
userId字符串
返回值

Promise<void> | Awaitable<undefined | null | AdapterUser>

待办事项

此方法目前尚未调用。

另请参见 用户管理

getAccount()?

optional getAccount(providerAccountId, provider): Awaitable<null | AdapterAccount>

按提供者帐户 ID 和提供者获取帐户。

如果未找到帐户,适配器必须返回 null

参数
参数类型
providerAccountId字符串
提供者字符串
返回值

Awaitable<null | AdapterAccount>

getAuthenticator()?

optional getAuthenticator(credentialID): Awaitable<null | AdapterAuthenticator>

从其凭证 ID 返回一个身份验证器。

如果找不到身份验证器,适配器必须返回 null

参数
参数类型
credentialID字符串
返回值

Awaitable<null | AdapterAuthenticator>

getSessionAndUser()?

optional getSessionAndUser(sessionToken): Awaitable<null | {
  session: AdapterSession;
  user: AdapterUser;
}>

一次性从数据库中返回一个会话和一个用户。

💡

如果数据库支持联接,建议减少数据库查询次数。

另请参见 数据库会话管理

参数
参数类型
sessionToken字符串
返回值

Awaitable<null | { session: AdapterSession; user: AdapterUser; }>

getUser()?

optional getUser(id): Awaitable<null | AdapterUser>

通过用户 ID 从数据库返回一个用户。

另请参见 用户管理

参数
参数类型
id字符串
返回值

Awaitable<null | AdapterUser>

getUserByAccount()?

optional getUserByAccount(providerAccountId): Awaitable<null | AdapterUser>

使用提供者 ID 和特定帐户的用户 ID 获取用户。

另请参见 用户管理

参数
参数类型
providerAccountIdPick<AdapterAccount, "provider" | "providerAccountId">
返回值

Awaitable<null | AdapterUser>

getUserByEmail()?

optional getUserByEmail(email): Awaitable<null | AdapterUser>

通过用户的电子邮件地址从数据库返回一个用户。

另请参见 验证令牌

参数
参数类型
电子邮件字符串
返回值

Awaitable<null | AdapterUser>

linkAccount()?

optional linkAccount(account): Promise<void> | Awaitable<undefined | null | AdapterAccount>

此方法在内部调用(但可以选择用于手动链接)。它在数据库中创建一个 Account

另请参见 用户管理

参数
参数类型
accountAdapterAccount
返回值

Promise<void> | Awaitable<undefined | null | AdapterAccount>

listAuthenticatorsByUserId()?

optional listAuthenticatorsByUserId(userId): Awaitable<AdapterAuthenticator[]>

返回用户的全部身份验证器。

如果找不到用户,适配器仍应返回一个空数组。如果由于其他原因检索失败,适配器必须抛出错误。

参数
参数类型
userId字符串
返回值

Awaitable<AdapterAuthenticator[]>

unlinkAccount()?

optional unlinkAccount(providerAccountId): Promise<void> | Awaitable<undefined | AdapterAccount>
参数
参数类型
providerAccountIdPick<AdapterAccount, "provider" | "providerAccountId">
返回值

Promise<void> | Awaitable<undefined | AdapterAccount>

待办事项

此方法目前尚未调用。

updateAuthenticatorCounter()?

optional updateAuthenticatorCounter(credentialID, newCounter): Awaitable<AdapterAuthenticator>

更新身份验证器的计数器。

如果更新失败,适配器必须抛出错误。

参数
参数类型
credentialID字符串
newCounter数字
返回值

Awaitable<AdapterAuthenticator>

updateSession()?

optional updateSession(session): Awaitable<undefined | null | AdapterSession>

更新数据库中的会话并返回它。

另请参见 数据库会话管理

参数
参数类型
sessionPartial<AdapterSession> & Pick<AdapterSession, "sessionToken">
返回值

Awaitable<undefined | null | AdapterSession>

updateUser()?

optional updateUser(user): Awaitable<AdapterUser>

更新数据库中的用户并返回它。

另请参见 用户管理

参数
参数类型
userPartial<AdapterUser> & Pick<AdapterUser, "id">
返回值

Awaitable<AdapterUser>

useVerificationToken()?

optional useVerificationToken(params): Awaitable<null | VerificationToken>

从数据库返回验证令牌并将其删除,因此它只能使用一次。

另请参见 验证令牌

参数
参数类型
params对象
params.identifier字符串
params.token字符串
返回值

Awaitable<null | VerificationToken>


AdapterAccount

帐户是用户和提供者之间的连接。

有两种类型的帐户

  • OAuth/OIDC 帐户,在用户使用 OAuth 提供者登录时创建。
  • 电子邮件帐户,在用户使用 电子邮件提供者 登录时创建。

一个用户可以有多个帐户。

扩展

属性

access_token?

optional readonly access_token: string;
继承自

Account.access_token

authorization_details?

optional readonly authorization_details: AuthorizationDetails[];
继承自

Account.authorization_details

expires_at?

optional expires_at: number;

基于 TokenEndpointResponse.expires_in 的计算值。

它是 TokenEndpointResponse.access_token 过期时的绝对时间戳(以秒为单位)。

此值可用于结合 TokenEndpointResponse.refresh_token 实现令牌轮换。

参见
继承自

Account.expires_at

expires_in?

optional readonly expires_in: number;
继承自

Account.expires_in

id_token?

optional readonly id_token: string;
继承自

Account.id_token

provider

provider: string;

此帐户的提供商 ID。例如“google”。查看完整列表,请访问 https://authjs.oauth.ac.cn/reference/core/providers

继承自

Account.provider

providerAccountId

providerAccountId: string;

此值取决于用于创建帐户的提供商类型。

  • oauth/oidc: OAuth 帐户的 ID,从 profile() 回调返回。
  • email: 用户的电子邮件地址。
  • credentials: idauthorize() 回调返回
继承自

Account.providerAccountId

refresh_token?

optional readonly refresh_token: string;
继承自

Account.refresh_token

scope?

optional readonly scope: string;
继承自

Account.scope

token_type?

optional readonly token_type: Lowercase<string>;

注意:由于该值不区分大小写,因此始终以小写形式返回。

继承自

Account.token_type

type

type: AdapterAccountType;

此帐户的提供商类型。

重写

Account.type

userId

userId: string;

此帐户所属用户的 ID

查看

https://authjs.oauth.ac.cn/reference/core/adapters#adapteruser

重写

Account.userId


AdapterAuthenticator

身份验证器代表分配给用户的凭据身份验证器。

扩展

属性

counter

counter: number;

身份验证器已使用次数。

继承自

Authenticator.counter

credentialBackedUp

credentialBackedUp: boolean;

客户端身份验证器是否备份了凭据。

继承自

Authenticator.credentialBackedUp

credentialDeviceType

credentialDeviceType: string;

身份验证器的设备类型。

继承自

Authenticator.credentialDeviceType

credentialID

credentialID: string;

Base64 编码的凭据 ID。

继承自

Authenticator.credentialID

credentialPublicKey

credentialPublicKey: string;

Base64 编码的凭据公钥。

继承自

Authenticator.credentialPublicKey

providerAccountId

providerAccountId: string;

与身份验证器连接的提供商帐户 ID。

继承自

Authenticator.providerAccountId

transports?

optional transports: null | string;

连接的传输标志。

继承自

Authenticator.transports

userId

userId: string;

身份验证器的用户 ID。

重写

Authenticator.userId


AdapterSession

会话保存有关用户当前登录状态的信息。

属性

expires

expires: Date;

会话到期的绝对日期。

如果在会话到期日期之前访问会话,则将根据 maxAge 选项进行扩展,如 SessionOptions.maxAge 中定义的那样。它在一个由 SessionOptions.updateAge 定义的时间段内最多扩展一次。

如果在会话到期日期之后访问会话,则它将从数据库中删除以清理非活动会话。

sessionToken

sessionToken: string;

使用 "database" AuthConfig.strategy 选项时,在数据库中查找会话的随机生成值。此值保存在客户端上的安全、仅限 HTTP 的 cookie 中。

userId

userId: string;

将活动会话连接到数据库中的用户


AdapterUser

用户代表可以登录应用程序的人员。如果用户尚不存在,则当他们首次登录时,将使用身份提供者返回的信息(配置文件数据)创建用户。相应的帐户也会被创建并链接到用户。

扩展

属性

email

email: string;

用户的电子邮件地址。

重写

User.email

emailVerified

emailVerified: null | Date;

用户是否已通过 电子邮件提供商 验证了他们的电子邮件地址。如果用户尚未使用电子邮件提供商登录,或者首次成功登录的日期,则为 null

id

id: string;

用户的唯一标识符。

重写

User.id

image?

optional image: null | string;
继承自

User.image

name?

optional name: null | string;
继承自

User.name


VerificationToken

验证令牌是一个临时令牌,用于通过用户的电子邮件地址登录用户。当用户使用 电子邮件提供商 登录时,它将被创建。当用户单击电子邮件中的链接时,令牌和电子邮件将被发送回服务器,服务器将在那里对其进行哈希处理并与数据库中的值进行比较。如果令牌和电子邮件匹配,并且令牌尚未过期,则用户将登录。然后令牌将从数据库中删除。

属性

expires

expires: Date;

令牌到期的绝对日期。

identifier

identifier: string;

用户的电子邮件地址。

token

token: string;

使用 AuthConfig.secret 值进行 哈希 的令牌。


AdapterAccountType

type AdapterAccountType: Extract<ProviderType, "oauth" | "oidc" | "email" | "webauthn">;

帐户类型。


isDate()

isDate(value): value is string

确定给定值是否可以解析为 Date

参数

参数类型
valueunknown

返回值

value 是字符串

Auth.js © Balázs Orbán 和团队 -2024