跳到內容
從 NextAuth.js v4 遷移?請閱讀 我們的遷移指南.

轉接器

轉接器

轉接器是一個具有函數屬性(方法)的物件,可從資料來源讀取和寫入資料。將這些方法視為將資料層正規化為 Auth.js 可以理解的通用介面的一種方式。

這使得 Auth.js 非常靈活,並允許它與任何資料層一起使用。

轉接器方法用於執行下列操作

  • 建立/更新/刪除使用者
  • 將帳號連結/取消連結至使用者
  • 處理作用中的工作階段
  • 支援跨多個裝置的無密碼驗證

如果任何方法未實作,但被 Auth.js 呼叫,則會向使用者顯示錯誤,且操作將失敗。

方法

createAuthenticator()?

optional createAuthenticator(authenticator): Awaitable<AdapterAuthenticator>

建立新的驗證器。

如果建立失敗,轉接器必須擲回錯誤。

參數
參數類型
驗證器AdapterAuthenticator
回傳值

Awaitable<AdapterAuthenticator>

createSession()?

optional createSession(session): Awaitable<AdapterSession>

為使用者建立工作階段並傳回它。

另請參閱 資料庫工作階段管理

參數
參數類型
session物件
session.expiresDate
session.sessionTokenstring
session.userIdstring
回傳值

Awaitable<AdapterSession>

createUser()?

optional createUser(user): Awaitable<AdapterUser>

在資料庫中建立使用者並傳回它。

另請參閱 使用者管理

參數
參數類型
使用者AdapterUser
回傳值

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>

從資料庫中刪除工作階段。最好這個方法也傳回正在刪除的工作階段,以便記錄。

另請參閱 資料庫工作階段管理

參數
參數類型
sessionTokenstring
回傳值

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

deleteUser()?

optional deleteUser(userId): Promise<void> | Awaitable<undefined | null | AdapterUser>
參數
參數類型
userIdstring
回傳值

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

待辦事項

此方法目前尚未被調用。

另請參閱 使用者管理

getAccount()?

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

透過提供者帳戶 ID 和提供者取得帳戶。

如果找不到帳戶,适配器必須返回 null

參數
參數類型
providerAccountIdstring
providerstring
回傳值

Awaitable<null | AdapterAccount>

getAuthenticator()?

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

從憑證 ID 返回驗證器。

如果找不到驗證器,适配器必須返回 null

參數
參數類型
credentialIDstring
回傳值

Awaitable<null | AdapterAuthenticator>

getSessionAndUser()?

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

一次從資料庫返回 session 和 user。

💡

如果資料庫支援 JOIN,建議減少資料庫查詢次數。

另請參閱 資料庫工作階段管理

參數
參數類型
sessionTokenstring
回傳值

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

getUser()?

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

透過使用者 ID 從資料庫返回使用者。

另請參閱 使用者管理

參數
參數類型
idstring
回傳值

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>

透過使用者的電子郵件地址從資料庫返回使用者。

另請參閱 驗證權杖

參數
參數類型
emailstring
回傳值

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[]>

返回使用者的所有驗證器。

如果找不到使用者,适配器仍然應該返回一個空陣列。 如果因其他原因檢索失敗,适配器必須拋出錯誤。

參數
參數類型
userIdstring
回傳值

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>

更新驗證器的計數器。

如果更新失敗,适配器必須拋出錯誤。

參數
參數類型
credentialIDstring
newCounter數字
回傳值

Awaitable<AdapterAuthenticator>

updateSession()?

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

更新資料庫中的 session 並返回。

另請參閱 資料庫工作階段管理

參數
參數類型
sessionPartial<AdapterSession> & Pick<AdapterSession, "sessionToken">
回傳值

Awaitable<undefined | null | AdapterSession>

updateUser()?

optional updateUser(user): Awaitable<AdapterUser>

更新資料庫中的使用者並返回。

另請參閱 使用者管理

參數
參數類型
使用者Partial<AdapterUser> & Pick<AdapterUser, "id">
回傳值

Awaitable<AdapterUser>

useVerificationToken()?

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

從資料庫返回驗證權杖並將其刪除,因此它只能使用一次。

另請參閱 驗證權杖

參數
參數類型
參數物件
params.identifierstring
params.tokenstring
回傳值

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.dev.org.tw/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.dev.org.tw/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;

工作階段過期的絕對日期。

如果在工作階段到期日期之前存取工作階段,則會根據 SessionOptions.maxAge 中定義的 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 is string

Auth.js © Balázs Orbán 和團隊 -2024