PublicKeyCredential:signalCurrentUserDetails() 靜態方法
PublicKeyCredential 介面的 signalCurrentUserDetails() 靜態方法會通知認證器,某個使用者已在 信譽方 (RP) 伺服器上更新了其使用者名稱和/或顯示名稱。
這允許認證器更新使用者賬戶的詳細資訊,以確保它們與 RP 所持有的資訊保持同步。此方法僅應在當前使用者已透過身份驗證時使用 — 登入後,或者當他們在 RP Web 應用上更改與其憑證關聯的元資料時使用。
語法
signalCurrentUserDetails(options)
引數
options-
一個代表已更新使用者資訊的物件,其中包含以下屬性:
displayName-
一個代表已更新使用者
displayName的字串。 name-
一個代表已更新使用者
name的字串。 rpId-
一個字串,表示傳送訊號的 RP 的 ID。
userId-
一個 base64url 編碼的字串,代表了憑證關聯的 使用者
id。
返回值
異常
Promise 會因以下異常而拒絕
SecurityErrorDOMException-
RP 域無效。
TypeErrorDOMException-
credentialId不是一個有效的 base64url 編碼字串。
描述
使用者認證器中儲存的有關 可發現憑證(例如,passkey)的資訊可能與 RP 伺服器不同步。當用戶在 RP Web 應用上更新其使用者名稱或顯示名稱但未更新認證器時,可能會發生這種情況。
下次他們嘗試使用可發現憑證登入時,憑證仍會以舊的使用者名稱/顯示名稱出現在相關 UI 中,這可能會導致令人困惑的使用者體驗。
為避免此問題,每次使用者更新其使用者賬戶詳細資訊或登入時,RP Web 應用都應呼叫 signalCurrentUserDetails(),告知認證器使用者資訊已更新。認證器如何處理此資訊由其自行決定,但預期它會與其提供的更新同步其使用者資訊。
示例
通知當前使用者詳細資訊
在此示例中,我們呼叫 signalCurrentUserDetail() 方法,並將使用者剛剛在 RP 上編輯的憑證的詳細資訊傳遞給它。因此,認證器應更新其自身的憑證副本,以保持與 RP 的同步。
if (PublicKeyCredential.signalCurrentUserDetails) {
await PublicKeyCredential.signalCurrentUserDetails({
rpId: "example.com",
userId: "M2YPl-KGnA8", // base64url-encoded user ID
name: "a.new.email.address@example.com", // username
displayName: "Maria Sanchez",
});
} else {
// Encourage the user to update their details in the authenticator
}
有關更多程式碼示例,請參閱 developer.chrome.com 上的 使用 Signal API 使 passkey 與伺服器上的憑證保持一致 (2024)。
規範
| 規範 |
|---|
| Web Authentication:訪問公鑰憑證的 API - 第 3 級 # dom-publickeycredential-signalcurrentuserdetails |
瀏覽器相容性
載入中…
另見
PublicKeyCredential.signalAllAcceptedCredentials()PublicKeyCredential.signalUnknownCredential()- 使用 Signal API 使 passkey 與伺服器上的憑據保持一致,來自 developer.chrome.com (2024)