Ich habe diesen Fehler schon einmal bei Meta bemerkt, aber nach dem letzten Upgrade trat er auch bei meinen Bereitstellungen auf: Wenn man auf Anmelden klickt, erscheint das Modal “Willkommen zurück ”, und wird sofort von “Entschuldigung, ein Fehler ist aufgetreten” überschattet. Wenn man auf OK klickt, verschwindet das Fehlermodal und die Authentifizierung kann normal fortgesetzt werden.
In der Konsole gibt es ein Fehlerprotokoll:
ajax-error.js:9:12
l ajax-error.js:9
p ajax-error.js:95
passkeyLogin login.js:147
2 „Gefällt mir“
Moin
1. Februar 2024 um 00:38
2
Welchen Browser verwenden Sie?
Firefox 115.7.0esr (64-Bit) unter Debian 12.
Discourse v3.3.0.beta1-dev — Commits · discourse/discourse · GitHub — Ember v5.5.0
1 „Gefällt mir“
Moin
1. Februar 2024 um 00:41
4
2 „Gefällt mir“
Dies ist eine Regression, die hier eingeführt wurde: FEATURE: Allow users to confirm session with passkeys (#24337) · discourse/discourse@c6ead3f · GitHub
) {
if (!isWebauthnSupported()) {
return errorCallback(I18n.t("login.security_key_support_missing_error"));
}
// we need to check isConditionalMediationAvailable for Firefox
// without it, Firefox will throw console errors
// We cannot do a general check because iOS Safari and Chrome in Selenium quietly support the feature
// but they do not support the PublicKeyCredential.isConditionalMediationAvailable() method
if (mediation === "conditional" && isFirefox) {
const isCMA = await PublicKeyCredential.isConditionalMediationAvailable();
if (!isCMA) {
return;
}
}
try {
const resp = await ajax("/session/passkey/challenge.json");
const credential = await navigator.credentials.get({
publicKey: {
Ich denke, der Code muss in den try{} unten verschoben werden; andernfalls wird der Fehler die Benutzeroberfläche anstelle der Konsole verwenden.
userHandle: bufferToBase64(credential.response.userHandle),
};
} catch (error) {
if (error.name === "AbortError") {
// no need to show an error when the cancelling a pending ceremony
// this happens when switching from the conditional method (username input autofill)
// to the optional method (login button) or vice versa
return null;
}
if (mediation === "conditional") {
// The conditional method gets triggered in the background
// it's not helpful to show errors for it in the UI
// eslint-disable-next-line no-console
console.error(error);
return null;
}
if (error.name === "NotAllowedError") {
return errorCallback(I18n.t("login.security_key_not_allowed_error"));
} else if (error.name === "SecurityError") {
4 „Gefällt mir“
pmusaraj
(Penar Musaraj)
2. Februar 2024 um 21:40
7
Danke für den Bericht. Dies sollte über FIX: Handle old Firefox versions that do not support isConditionalMed… by pmusaraj · Pull Request #25549 · discourse/discourse · GitHub behoben werden. Ich konnte dies nur mit dieser Version von Firefox unter Windows/macOS reproduzieren, aber die Korrektur sollte auch für andere Betriebssysteme gelten.
3 „Gefällt mir“
pmusaraj
(Penar Musaraj)
Geschlossen,
6. Februar 2024 um 22:41
9
Dieses Thema wurde nach 4 Tagen automatisch geschlossen. Neue Antworten sind nicht mehr möglich.