Signatur
Beschreibung
Die Eigenschaft name eines PasswordCredential-Objekts enthält einen frei wählbaren, menschenlesbaren Namen, zum Beispiel „Erika Mustermann“. Der Browser zeigt ihn in der nativen Kontoauswahl an, die bei navigator.credentials.get() erscheinen kann, wenn für eine Origin mehrere gespeicherte Zugangsdaten vorhanden sind. Zusammen mit iconURL hilft er Nutzerinnen und Nutzern, das richtige Konto zu erkennen.
Gesetzt wird der Wert beim Erzeugen des Credentials, entweder über ein Datenobjekt (new PasswordCredential({ id, password, name })) oder aus einem Formular-Element. Im Formularfall liest der Browser das Feld mit autocomplete="name" bzw. autocomplete="nickname". Danach lässt sich name nur noch lesen. Soll der Name geändert werden, legt man ein neues Credential an und speichert es mit navigator.credentials.store().
Die Eigenschaft stammt aus dem Mixin CredentialUserData, das auch FederatedCredential einbindet. Ist beim Erzeugen kein Name angegeben, ist der Wert ein leerer String "". Er ist nie null.
Rückgabewert
Beispiele
Credential mit Anzeigenamen erzeugen und speichern
const speichereLogin = async (benutzer, passwort, anzeigename) => {
if (!('PasswordCredential' in window)) return;
const cred = new PasswordCredential({
id: benutzer,
password: passwort,
name: anzeigename,
iconURL: 'https://example.com/avatar/erika.png'
});
console.log(cred.name);
await navigator.credentials.store(cred);
};
speichereLogin('erika@example.com', 'geheim123', 'Erika Mustermann');
Gespeicherte Zugangsdaten abrufen und Namen anzeigen
const autoLogin = async () => {
const cred = await navigator.credentials.get({
password: true,
mediation: 'optional'
});
if (cred instanceof PasswordCredential) {
const begruessung = cred.name || cred.id;
document.querySelector('#hallo').textContent = `Willkommen zurück, ${begruessung}!`;
}
};
autoLogin();
Namen aus einem Formular übernehmen
// <form id="login">
// <input name="user" autocomplete="username">
// <input name="anzeige" autocomplete="name">
// <input name="pw" type="password" autocomplete="current-password">
// </form>
const form = document.querySelector('#login');
form.addEventListener('submit', async (event) => {
event.preventDefault();
const cred = new PasswordCredential(form);
console.log(`Name: "${cred.name}"`);
await navigator.credentials.store(cred);
});
Eigenschaft ist schreibgeschützt
const cred = new PasswordCredential({ id: 'max', password: 'pw', name: 'Max' });
cred.name = 'Moritz'; // wird ignoriert (im Strict Mode: TypeError)
console.log(cred.name);
// Wichtig · Fallstricke
- Browser-Unterstützung:
PasswordCredentialgibt es nur in Chromium-basierten Browsern. Firefox und Safari unterstützen es nicht. Prüfe deshalb immer vorher mit'PasswordCredential' in window. - Sicherer Kontext: Die API funktioniert nur über HTTPS (oder auf
localhost). - Schreibschutz: Eine Zuweisung an
namewird stillschweigend ignoriert. Im Strict Mode (also auch in ES-Modulen) löst sie einenTypeErroraus. - Leerer Wert: Ohne Angabe ist
nameein leerer String. Für die Anzeige lohnt sich deshalb ein Rückfallwert wiecred.name || cred.id. - Sicherheit: Der Name kommt aus Nutzereingaben. Gib ihn deshalb über
textContentaus und nicht überinnerHTML, sonst droht XSS. - Der Wert ist öffentlich und nicht geheim. Er darf keine sensiblen Daten enthalten.