Unicode (Russian) Benutzernamen-Validierung schlägt zufällig fehl

Benutzernamen mit russischen Zeichen, z. B. фыв (ich bin mir nicht sicher, ob dies von bestimmten Zeichen abhängt), führen manchmal zu Validierungsfehlern.

Getestet in den neuesten Versionen von Chrome und Firefox unter Ubuntu 19.10; Discourse-Version ist 2.4.0.beta8 (16de46f8d4).

Die HTTP-Anfrage scheint für diese drei Zeichen immer identisch zu sein; dies wurde durch mehrfaches Wiederholen in der DevTools-Konsole reproduziert:

fetch('/u/check_username?username=%D1%84%D1%8B%D0%B2&email=', {headers: {'X-Requested-With': 'XMLHttpRequest'}}).then(r => r.json()).then(console.log)

Ich habe versucht, die Unicode-Whitelist auf [йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁ] zu setzen, jedoch ohne Erfolg.

@gerhard hast du eine Ahnung, was hier los ist? Ist unser russischer Regex falsch?

Ich kann das Problem nicht nachvollziehen. Besteht die Möglichkeit, dass Sie beim Erscheinen der Fehlermeldung „Darf nur Zahlen, Buchstaben, Bindestriche, Punkte und Unterstriche enthalten

2 „Gefällt mir“

Ja, genau deshalb ist das seltsam.

Ich dachte zunächst, es könnte mit einer Art Rate Limiting zusammenhängen, aber nun trat der Fehler auch nach einer langen Pause (2 Minuten) beim ersten Aufruf auf, während der dritte Aufruf innerhalb weniger Sekunden erfolgreich war.

Ich kann das Problem reproduzieren, indem ich den oben genannten Code in den DevTools ausführe.

Ich kann das Problem immer noch nicht reproduzieren. Könntest du bitte versuchen, die Site-Einstellung unicode usernames zu deaktivieren und wieder zu aktivieren? Vielleicht hat ein Unicorn-Worker nicht mitbekommen, dass sich die Einstellung geändert hat. Das würde erklären, warum nur einige der Anfragen zu einem Fehler führen. Falls das nicht hilft, versuche, den App-Container neu zu erstellen.

2 „Gefällt mir“

Das hat nicht geholfen, aber ja, ich kann das Problem auch in meiner lokalen Docker-Instanz nicht reproduzieren. Es scheint nach einem Neustart beim Upgrade von Discourse verschwunden zu sein.

Übrigens: Falls jemand nach einer einfacheren Möglichkeit sucht, kyrillische Buchstaben in die Whitelist aufzunehmen, funktioniert dieser Regex anscheinend: [\p{Cyrillic}]

1 „Gefällt mir“