저는 Rails 애플리케이션에 대해 Discourse를 ID 제공자(Identity Provider)로 사용하고 있습니다(즉, Discourse 로그인으로 내 Rails 앱에 로그인하는 방식이지, 그 반대는 아닙니다). Discourse의 사용자 프로필 페이지에 링크를 추가하여 해당 사용자의 Rails 앱 내 프로필로 이동하게 하고 싶습니다. 이를 위해 Discourse는 내 Rails 애플리케이션/데이터베이스에서 해당 사용자의 사용자 ID를 알아야 합니다.
DiscourseConnect는 반대 방향(다른 로그인으로 Discourse에 로그인)일 때 'external_id’를 저장한다는 것은 알고 있습니다. 하지만 이 경우(내 방식)에는 어떤 것이 저장됩니까?
감사합니다, @david. 우연히도 다른 방향의 링크(내 Rails 앱 사용자 프로필에서 Discourse 사용자 프로필로)를 설정할 때 정확히 이렇게 했어요. 이 Discourse 플러그인(/user-by-id/123/summary)을 사용했는데, 내 Rails 앱에서는 사용자명이 변경될 수 있으므로 사용자명 대신 Discourse 사용자 ID를 저장하기 때문입니다.
해당 솔루션은 반대 방향에서는 잘 작동할 수 있지만, 내 Rails 앱에 사용자 프로필이 있는 사용자가 포럼의 모든 사용자가 아니라는 점이 문제입니다. Discourse 사용자가 조직에 '가입’할 때만 Rails 사용자가 생성되므로, Discourse 포럼에는 비회원도 존재할 수 있습니다.
따라서 제 선택지는 두 가지인 것 같습니다:
A) Discourse 사용자가 Rails 앱에서도 사용자인지 확인하기 위해 내 Rails 앱으로 ajax 요청을 보내는 JavaScript 플러그인을 만들고, 해당 조건이 충족되면 링크를 렌더링하는 방법;
B) Rails 앱 사용자가 생성되어 Discourse 사용자와 연결되는 시점에, Rails 앱 데이터베이스에 Discourse 사용자 ID를 저장하는 것 외에도, Discourse 사용자 프로필에 Rails 사용자 ID를 저장하는 방법(예: 사용자 정의 필드로).
(사용자 정의 필드가 관리자만 수정할 수 있다면) (B)가 더 나은 해결책이라고 느끼지만, 사용자 정의 필드에 익숙하지 않고 API를 통해 접근 가능한지 여부는 잘 모르겠습니다.
수정: 마지막으로 이 문제를 조사했을 때를 이제야 기억났는데, 문제는 사용자 정의 필드가 사용자가 직접 수정할 수 있다는 점입니다. 이 때문에 시스템이 생성한 참조 값(이러한 ID 등)을 저장하는 곳으로 적합하지 않아요