Alex_P
(Alex P.)
12월 11, 2019, 10:17오전
1
러시아 문자가 포함된 사용자 이름(예: фыв)은 특정 문자에 따라 달라질 수 있지만, 때때로 검증에 실패합니다.
Ubuntu 19.10에서 최신 Chrome 및 Firefox로 테스트했으며, Discourse 버전은 2.4.0.beta8 (16de46f8d4)입니다.
이 3개의 문자에 대해 HTTP 요청은 항상 동일하며, DevTools 콘솔에서 여러 번 반복하여 재현할 수 있습니다:
fetch('/u/check_username?username=%D1%84%D1%8B%D0%B2&email=', {headers: {'X-Requested-With': 'XMLHttpRequest'}}).then(r => r.json()).then(console.log)
유니코드 화이트리스트를 [йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁ]로 설정해 보았지만 효과가 없었습니다.
sam
(Sam Saffron)
12월 11, 2019, 11:37오후
2
@gerhard 여기서 무슨 일이 일어나고 있는지 혹시 알 수 있을까요? 우리의 러시아어 정규식이 잘못된 건가요?
gerhard
(Gerhard Schlager)
12월 12, 2019, 1:37오후
3
문제를 재현할 수 없습니다. "숫자, 문자, 대시, 마침표, 밑줄만 포함할 수 있습니다"라는 오류 메시지가 표시될 때, 보이지 않는 공백이나 비슷한 것을 입력하셨을 가능성이 있을까요?
사용자 이름 확인은 서버에서 실행되므로, 정규식에 문제가 있었다면 동일한 입력에 대해 항상 동일한 결과가 생성되어야 합니다.
2개의 좋아요
Alex_P
(Alex P.)
12월 12, 2019, 2:49오후
4
네, 그래서 이상한 거예요.
종류의 레이트 리미팅(rate limiting)과 관련이 있을 것 같다고 생각했지만, 긴 대기 시간(2분) 후에도 첫 번째 요청에서 오류가 발생했고, 몇 초 후 세 번째 요청에서는 성공했습니다.
gerhard:
“숫자, 문자, 대시, 마침표, 밑줄만 포함해야 합니다”라는 오류 메시지가 표시될 때, 보이지 않는 공백이나 비슷한 것을 입력한 가능성이 있나요?
위 코드를 DevTools에서 실행하면 재현할 수 있습니다.
gerhard
(Gerhard Schlager)
12월 12, 2019, 3:28오후
5
아직도 문제를 재현하지 못했습니다. unicode usernames 사이트 설정을 비활성화했다가 다시 활성화해 볼 수 있을까요? 유니콘 워커가 설정이 변경되었음을 인지하지 못했을 수 있습니다. 그렇게 되면 일부 요청에서만 오류가 발생하는 이유를 설명할 수 있습니다. 그래도 해결되지 않으면 앱 컨테이너를 다시 빌드해 보세요.
2개의 좋아요
Alex_P
(Alex P.)
12월 16, 2019, 4:07오후
6
도움이 되지는 않았지만, 네, 제 로컬 Docker 인스턴스 에서도 재현할 수 없었습니다. 그리고 Discourse를 업그레이드할 때 재시작 후 문제가 사라진 것으로 보입니다.
참고로 러시아 문자를 화이트리스트에 추가하는 더 간단한 방법을 찾고 있다면, 이 정규식이 작동하는 것 같습니다: [\p{Cyrillic}]
1개의 좋아요