适配器
适配器
适配器是一个包含函数属性(方法)的对象,这些属性从数据源读取和写入数据。将这些方法视为将数据层规范化为 Auth.js 可以理解的通用接口的一种方式。
这就是使 Auth.js 非常灵活并允许它与任何数据层一起使用的原因。
适配器方法用于执行以下操作
- 创建/更新/删除用户
- 将帐户链接/取消链接到用户
- 处理活动会话
- 跨多个设备支持无密码身份验证
如果任何方法未实现,但被 Auth.js 调用,则会向用户显示错误,并且操作将失败。
方法
createAuthenticator()?
optional createAuthenticator(authenticator): Awaitable<AdapterAuthenticator>创建一个新的身份验证器。
如果创建失败,适配器必须抛出错误。
参数
| 参数 | 类型 |
|---|---|
authenticator | AdapterAuthenticator |
返回值
Awaitable<AdapterAuthenticator>
createSession()?
optional createSession(session): Awaitable<AdapterSession>为用户创建会话并返回它。
另请参阅 数据库会话管理
参数
| 参数 | 类型 |
|---|---|
session | 对象 |
session.expires | 日期 |
session.sessionToken | 字符串 |
session.userId | 字符串 |
返回值
createUser()?
optional createUser(user): Awaitable<AdapterUser>在数据库中创建用户并返回它。
另请参阅 用户管理
参数
| 参数 | 类型 |
|---|---|
user | AdapterUser |
返回值
createVerificationToken()?
optional createVerificationToken(verificationToken): Awaitable<undefined | null | VerificationToken>创建一个验证令牌并返回它。
另请参阅 验证令牌
参数
| 参数 | 类型 |
|---|---|
verificationToken | VerificationToken |
返回值
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 获取用户。
另请参阅 用户管理
参数
| 参数 | 类型 |
|---|---|
providerAccountId | Pick<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。
另请参阅 用户管理
参数
| 参数 | 类型 |
|---|---|
account | 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>参数
| 参数 | 类型 |
|---|---|
providerAccountId | Pick<AdapterAccount, "provider" | "providerAccountId"> |
返回
Promise<void> | Awaitable<undefined | AdapterAccount>
待办
此方法目前尚未调用。
updateAuthenticatorCounter()?
optional updateAuthenticatorCounter(credentialID, newCounter): Awaitable<AdapterAuthenticator>更新身份验证器的计数器。
如果更新失败,适配器必须抛出错误。
参数
| 参数 | 类型 |
|---|---|
credentialID | 字符串 |
newCounter | number |
返回
Awaitable<AdapterAuthenticator>
updateSession()?
optional updateSession(session): Awaitable<undefined | null | AdapterSession>更新数据库中的会话并将其返回。
另请参阅 数据库会话管理
参数
| 参数 | 类型 |
|---|---|
session | Partial<AdapterSession> & Pick<AdapterSession, "sessionToken"> |
返回
Awaitable<undefined | null | AdapterSession>
updateUser()?
optional updateUser(user): Awaitable<AdapterUser>更新数据库中的用户并将其返回。
另请参阅 用户管理
参数
| 参数 | 类型 |
|---|---|
user | Partial<AdapterUser> & Pick<AdapterUser, "id"> |
返回
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;继承自
authorization_details?
optional readonly authorization_details: AuthorizationDetails[];继承自
expires_at?
optional expires_at: number;基于 TokenEndpointResponse.expires_in 的计算值。
它是 TokenEndpointResponse.access_token 过期的绝对时间戳(以秒为单位)。
此值可用于实现令牌轮换,以及 TokenEndpointResponse.refresh_token。
参见
- https://authjs.oauth.ac.cn/guides/refresh-token-rotation#database-strategy
- https://www.rfc-editor.org/rfc/rfc6749#section-5.1
继承自
expires_in?
optional readonly expires_in: number;继承自
id_token?
optional readonly id_token: string;继承自
provider
provider: string;此帐户的提供商 ID。例如,“google”。查看完整的列表,请访问 https://authjs.oauth.ac.cn/reference/core/providers
继承自
providerAccountId
providerAccountId: string;此值取决于用于创建帐户的提供程序类型。
- oauth/oidc: 从
profile()回调返回的 OAuth 帐户 ID。 - email: 用户的电子邮件地址。
- credentials: 从
authorize()回调返回的id
继承自
refresh_token?
optional readonly refresh_token: string;继承自
scope?
optional readonly scope: string;继承自
token_type?
optional readonly token_type: Lowercase<string>;注意:由于该值不区分大小写,因此始终以小写形式返回。
继承自
type
type: AdapterAccountType;此帐户的提供程序类型。
覆盖
userId
userId: string;此帐户所属用户的 ID。
参见
https://authjs.oauth.ac.cn/reference/core/adapters#adapteruser
覆盖
AdapterAuthenticator
验证器代表分配给用户的凭据验证器。
扩展
属性
counter
counter: number;验证器已使用次数。
继承自
credentialBackedUp
credentialBackedUp: boolean;客户端验证器是否备份了凭据。
继承自
Authenticator.credentialBackedUp
credentialDeviceType
credentialDeviceType: string;验证器的设备类型。
继承自
Authenticator.credentialDeviceType
credentialID
credentialID: string;Base64 编码的凭据 ID。
继承自
credentialPublicKey
credentialPublicKey: string;Base64 编码的凭据公钥。
继承自
Authenticator.credentialPublicKey
providerAccountId
providerAccountId: string;与验证器连接的提供程序帐户 ID。
继承自
Authenticator.providerAccountId
transports?
optional transports: null | string;连接的传输标志。
继承自
userId
userId: string;验证器的用户 ID。
覆盖
AdapterSession
会话保存有关用户当前登录状态的信息。
属性
expires
expires: Date;会话过期的绝对日期。
如果在会话过期日期之前访问会话,它将根据由 SessionOptions.maxAge 定义的 maxAge 选项进行扩展。在由 SessionOptions.updateAge 定义的时期内,它永远不会扩展超过一次。
如果在会话过期日期之后访问会话,它将从数据库中删除以清理非活动会话。
sessionToken
sessionToken: string;使用 "database" AuthConfig.strategy 选项时,用于在数据库中查找会话的随机生成的值。此值保存在客户端上的安全、HTTP-Only Cookie 中。
userId
userId: string;将活动会话连接到数据库中的用户。
AdapterUser
用户代表可以登录应用程序的人员。如果用户尚不存在,则他们首次登录时,将使用身份提供者返回的信息(配置文件数据)创建用户。相应的帐户也会被创建并链接到用户。
扩展
属性
email: string;用户的电子邮件地址。
覆盖
emailVerified
emailVerified: null | Date;用户是否通过 电子邮件提供商 验证了他们的电子邮件地址。如果用户尚未使用电子邮件提供商登录,或者首次成功登录的日期,则为 null。
id
id: string;用户的唯一标识符。
覆盖
image?
optional image: null | string;继承自
name?
optional name: null | string;继承自
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
参数
| 参数 | 类型 |
|---|---|
value | 未知 |
返回
value 是字符串