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

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

另请参见 用户管理

参数
参数类型
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字符串
newCounternumber
返回值

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: 来自 profile() 回调的 OAuth 账户 ID。
  • 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-Only 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