PublicKeyCredential:signalCurrentUserDetails() 静态方法
PublicKeyCredential
接口的 signalCurrentUserDetails()
静态方法会通知认证器,某个用户已在 信誉方 (RP) 服务器上更新了其用户名和/或显示名称。
这允许认证器更新用户账户的详细信息,以确保它们与 RP 所持有的信息保持同步。此方法仅应在当前用户已通过身份验证时使用 — 登录后,或者当他们在 RP Web 应用上更改与其凭证关联的元数据时使用。
语法
signalCurrentUserDetails(options)
参数
options
-
一个代表已更新用户信息的对象,其中包含以下属性:
displayName
-
一个代表已更新用户
displayName
的字符串。 name
-
一个代表已更新用户
name
的字符串。 rpId
-
一个字符串,表示发送信号的 RP 的 ID。
userId
-
一个 base64url 编码的字符串,代表了凭证关联的 用户
id
。
返回值
异常
Promise 会因以下异常而拒绝
SecurityError
DOMException
-
RP 域无效。
TypeError
DOMException
-
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)