테마 컴포넌트에 API 토큰 숨기기

페이지 로드 중에 외부 API에 요청을 보내 데이터를 가져오는 테마 컴포넌트가 있습니다. 그런데 이 데이터를 가져오는 데 사용하는 Bearer 토큰은 당연히 클라이언트가 접근할 수 있는 스크립트에 로드됩니다. 이 정보를 숨길 수 있도록 플러그인이나 비슷한 것을 만들 수 있는 방법이 있을까요?

네, 플러그인을 생성하고 데이터를 가져오는 컨트롤러 메서드를 정의해야 합니다.

그 다음, 프론트엔드 코드에서 컨트롤러 메서드를 호출합니다. 이 메서드는 서버 측에서 베어러 토큰을 주입하여 제3자가 접근할 수 없도록 하고, 외부 API에 호출을 수행합니다.

새로운 컨트롤러를 만들어서 처리하는 것(이것은 Richard가 명확히 추천한 방식이 아닙니다) 대신, 기존 직렬화기(serializer)에 비교적 쉽게 추가할 수 있습니다. 예를 들어 다음과 같은 방식으로요.

  add_to_serializer(:current_user, :my_stuff) do
    stuff = get_my_stuff_somehow
    stuff
  end

어떤 직렬화기가 있는지, 그리고 어떤 것을 사용해야 하는지 파악하는 것은 Hopefully 간단할 것입니다(대부분은 추측하기 쉽지만, app/serializers에서 찾을 수 있습니다). add_to_serializer로 https://github.com/discourse/all-the-plugins를 검색하면 충분한 예시를 찾을 수 있습니다. 그리고 https://github.com/discourse/discourse-plugin-skeleton에서 시작해 보세요.

Ruby나 Rails를 몰라도, 위 내용을 보면 무엇을 해야 하는지 꽤 좋은 아이디어를 얻을 수 있을 것입니다. 그렇지 않다면, 예산을 정해서 #marketplace에서 질문할 수 있습니다.

시리얼라이저에 외부 종속성을 연결하는 것은 매우 나쁜 아이디어라고 생각합니다. @pfaffman
외부 서비스가 중단되거나 느려지면 포럼도 함께 중단됩니다.

아. 음, 안 되겠다. 그 말이 맞는 것 같긴 해. :person_shrugging:

@attj , 이건 제가 하는 말보다 리처드가 하는 말을 더 신뢰해야 하는 많은 사안 중 하나야.

경로를 추가하는 등의 작업을 직접 해야 할 텐데, 코드 라인 수가 꽤 더 늘어날 거야 (아마 수십 라인 정도). Discourse Category Home 🏠 이 경로를 추가하는 사례 중 하나라고 생각해.

플러그인을 작성한 것 같긴 한데, app.yml에 포함하려면 GitHub에 올려야 합니다. 그런데 그렇게 하면 토큰도 함께 노출되게 되죠. 이 문제를 우회하는 방법이 있을까요?

설치 후 사이트 설정에서 토큰을 읽어 해당 위치에 입력하세요.

완전히 동의합니다. 감사합니다!