플러그인을 개발하고 있다면, 필요한 작업을 직접 수행하는 플러그인 마운트 컨트롤러에서 새로운 라우트를 개발해야 합니다. 이러한 라우트는 모두 Access-Control-Allow-{Origin, Headers, Credentials} 응답 헤더를 설정하는 before_action을 공유할 수 있습니다(앱이 실행되어야 할 도메인 목록에 포함된 경우 Origin 요청 헤더를 그대로 반환합니다).
이렇게 하면 JS 코드에서 API 키 없이 단순히 fetch(..., { credentials: "include", ...})를 호출할 수 있습니다.
리플을 남겨주신 @riking 님, 감사합니다. 브라우저에 discourse 세션이 열려 있으면 이 방법은 잘 작동합니다.
우리는 SiteSetting.enable_local_logins = false이고 oauth를 통한 인증 메커니즘이 하나만 있으므로, http://discourse_site/login을 직접 호출하여 수동으로 새 세션을 시작할 수 있습니다. 브라우저는 우리의 oauth 제공자로 리다이렉트를 따르며, 이후 discourse로 리다이렉트됩니다. 이는 /user-api-key/new를 호출할 때 내부적으로 일어나던 것과 동일한 동작입니다.
현재 세션이 없는 상태에서 앱에서 discourse 세션을 프로그래매틱으로 시작하는 방법은 무엇일까요?