가끔 "로그아웃되었습니다" 토스트 메시지가 표시됩니다

사용자가 로그인된 상태를 유지하는 데 문제가 있습니다.

  1. SSO를 사용하여 Discourse를 우리 앱에 연결합니다.
  2. 로그인에 성공하면 Discourse로 리디렉션됩니다.
  3. 특정 보드를 클릭합니다.
  4. "로그아웃되었습니다"라는 팝업이 표시됩니다.

우리의 추측은 다음과 같습니다.
보드를 클릭할 때마다 세션 스토리지에 있는 _forum_session 값이 계속 변합니다.
때때로 이전 세션 키와 새로 생성된 세션 키가 일치하지 않는 경우가 발생합니다.

_forum_session 값을 어떻게 관리해야 하나요? 또는 _forum_session 생성 순서를 어떻게 제어해야 하나요?

이 팝업을 유발하는 원인은 무엇일까요?

이 문제를 해결하기 위해 무엇을 제공해야 할지 모르겠습니다. 주저하지 말고 말씀해 주세요.

죄송합니다, 이 내용을 지원팀에 전달합니다. 사이트가 어떻게 배포되는지 설명해 주실 수 있을까요?

도움 주셔서 감사합니다.
사이트는 아래와 같습니다.

version: 3.5.0.beta1
deployment type: self-hosted
login type: Discourse SSO Connect

안녕하세요,

현재 저희 인프라 내에서 셀프호스티드 Discourse 인스턴스를 운영 중입니다.

Discourse SSO Connect 방식으로 로그인하는 부분까지(인증에는 자체 커스텀 계정 서버를 사용)까지는 모두 정상적으로 작동합니다.

하지만 검색 작업을 수행할 때 "로그아웃되었습니다"라는 팝업이 랜덤하게 나타나는 문제를 겪고 있습니다.

이 문제는 프로덕션 환경에서만 발생하며, 개발 또는 스테이징 환경에서는 발생하지 않습니다.

Discourse 오픈소스 코드는 수정하지 않았습니다.

저희의 추측에 따르면, _forum_session 쿠키는 각 API 호출 시마다 업데이트되어야 하는데, 어떤 이유에서인지 프로덕션 환경에서는 이 업데이트가 실패하는 것으로 보입니다. 그 결과 현재 세션 쿠키가 무효화되어 로그아웃이 발생하는 것입니다.

비슷한 문제를 경험하신 분이나 원인에 대한 통찰이 있으신 분이 계시다면, 도움을 주시면 감사하겠습니다.

가능한 한 빨리 이 문제를 해결하고자 합니다.

감사합니다!

이것이 다음 문제와 관련이 있을까요?

?

네, 공유해 주셔서 감사합니다.

forum_session 업데이트가 어떤 경우에 실패할 수 있는지 이해하고 싶습니다. 제 판단으로는 응답의 Set-Cookie 헤더를 통해 페이지에 진입할 때마다 업데이트되는 것 같습니다. 관련 로직은 변경하지 않았기 때문에, 간헐적으로 업데이트되지 않는 이유가 무엇인지 알 수 없습니다.

이미 해당 주제(아마도 같은 사이트에 관한 것일 텐데)가 있는 경우 새 주제를 열 필요가 없습니다.

4개월 반 이상 업데이트를 하지 않으셨네요. 최신 테스트 통과 버전(3.5.0.beta8-dev)으로 사이트를 업데이트한 후 문제가 해결되는지 확인해 보시기 바랍니다.

@RGJ 답변 감사합니다.

조금 이상합니다 — 같은 버전(3.5.0.beta1)으로 세 가지 환경을 운영하고 있는데, 이 문제는 프로덕션 환경에서만 발생합니다. 나머지 두 환경(개발 및 스테이징)은 정상적으로 작동하므로, 버전 관련 문제라고 생각하지 않습니다.

혹시 이 문제가 처음 보고된 건인가요? 과거에 비슷한 보고가 있었나요?

그 가능성을 배제하려면 먼저 업데이트를 해야 합니다.
또한 beta1에는 여러 보안 취약점이 포함되어 있으므로, 어쨌든 이 작업을 수행하는 것이 좋습니다 :wink: