密码
本指南描述了如何保存、更新和管理用户在新在线表单中输入的密码。
概述
Chromium 内置了一项功能,允许在用户提交包含用户名和密码的新表单时记住输入的凭据。当用户提交表单时,库会询问您是否希望保存这些凭据。
如果您保存了它们,下次加载该表单时,库将建议自动填充。

在这种情况下,必须启用 Web 表单自动填充功能。
要访问和管理所有已保存的密码,可以使用 PasswordStore,获取方式如下:
Java
Kotlin
var passwordStore = profile.passwordStore();
val passwordStore = profile.passwordStore()
保存密码
当用户提交一个包含用户名和密码的新表单时,库会通过 SavePasswordCallback 询问你是否要保存这些凭据。在回调中,你可以选择保存或永不保存(加入黑名单)。例如:
Java
Kotlin
browser.set(SavePasswordCallback.class, (params, tell) -> {
// 页面 URL。
var url = params.url();
// 对应的登录名。
var login = params.login();
if (login.equals("admin")) {
// 忽略本次保存密码的尝试。
tell.ignore();
} else if (url.contains("sensitive-website")) {
// 对该 URL 永远不保存密码。
tell.neverSave();
} else {
// 允许 Chromium 保存密码。
tell.save();
}
});
browser.register(SavePasswordCallback { params, tell ->
// 页面 URL。
val url = params.url()
// 对应的登录名。
val login = params.login()
if (login == "admin") {
// 忽略本次保存密码的尝试。
tell.ignore()
} else if (url.contains("sensitive-website")) {
// 对该 URL 永远不保存密码。
tell.neverSave()
} else {
// 允许 Chromium 保存密码。
tell.save()
}
})
如果你选择保存密码,它将被添加到密码存储中。如果选择 “never-save(永不保存)”,则会将该 URL 的表单标记为黑名单。之后,库将永远不会再提示你为该网页保存密码。
更新密码
当用户使用新密码提交先前已提交过的表单时,库会通过 UpdatePasswordCallback 询问您是否更新已保存的凭据。在此回调中,您可以选择更新或忽略新值。例如:
Java
Kotlin
browser.set(UpdatePasswordCallback.class, (params, tell) -> {
// 页面 URL。
var url = params.url();
// 对应的登录名。
var login = params.login();
if (login == "admin") {
// 忽略本次更新密码的尝试。
tell.ignore();
} else {
// 允许 Chromium 更新密码。
tell.update();
}
});
browser.register(UpdatePasswordCallback { params, tell ->
// 页面 URL。
val url = params.url()
// 对应的登录名。
val login = params.login()
if (login == "admin") {
// 忽略本次更新密码的尝试。
tell.ignore()
} else {
// 允许 Chromium 更新密码。
tell.update()
}
})
管理密码
密码存储中的每个元素都由 PasswordRecord 表示。它包含用户的登录名和提交表单的网页 URL。它不存储密码本身。
要读取所有已保存和黑名单记录,请使用:
Java
Kotlin
var allRecords = passwordStore.all();
val allRecords = passwordStore.all()
要仅读取已保存的记录,请使用:
Java
Kotlin
var allSavedRecords = passwordStore.allSaved();
val allSavedRecords = passwordStore.allSaved()
要仅读取 “never-saved”(标记为黑名单)的记录,请使用:
Java
Kotlin
var allNeverSavedRecords = passwordStore.allNeverSaved();
val allNeverSavedRecords = passwordStore.allNeverSaved()
要从存储中删除所有记录,请使用:
Java
Kotlin
passwordStore.clear();
passwordStore.clear()
要删除与特定 URL 关联的记录,请使用:
Java
Kotlin
passwordStore.removeByUrl(url);
passwordStore.removeByUrl(url)

