跳至内容
从 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>

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

另请参见 用户管理

参数
参数类型
帐户AdapterAccount
返回值

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>

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

另请参见 验证令牌

参数
参数类型
参数对象
参数.标识符字符串
参数.令牌字符串
返回值

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:从 authorize() 回调返回的 id
继承自

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

图像?

optional image: null | string;
继承自

User.image

姓名?

optional name: null | string;
继承自

User.name


验证令牌

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

属性

过期时间

expires: Date;

令牌到期的绝对日期。

标识符

identifier: string;

用户的电子邮件地址。

令牌

token: string;

一个 哈希 令牌,使用 AuthConfig.secret 值。


适配器帐户类型

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

帐户类型。


isDate()

isDate(value): value is string

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

参数

参数类型
未知

返回值

value 是字符串

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