ページ読み込み中に外部APIにリクエストを送信してデータを取得するテーマコンポーネントがあります。しかし、このデータを取得するために使用するBearerトークンは、クライアントがアクセスできるスクリプトに自然に読み込まれます。この情報を非表示にするには、プラグインなどを作成する方法はありますか?
はい、プラグインを作成し、データを取得するコントローラーメソッドを定義する必要があります。
次に、フロントエンドコードからコントローラーメソッドを呼び出します。これにより、ベアラートークンがサーバーサイドに注入され、第三者からはアクセスできなくなり、外部APIへの呼び出しが行われます。
新しいコントローラーを作成するのではなく(Richard が推奨したことは明確ではありません)、既存のシリアライザーに簡単に追加できます。たとえば次のようになります。
add_to_serializer(:current_user, :my_stuff) do
stuff = get_my_stuff_somehow
stuff
end
利用可能なシリアライザーとそのうちどれを使用したいかを把握するのは、おそらく簡単です(ほとんどは推測しやすいですが、app/serializers にあります)。add_to_serializer を検索するために GitHub - discourse/all-the-plugins を検索すると、たくさんの例が見つかるはずです。そして、GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins から始めてください。
Ruby や Rails を知らなくても、上記で何をする必要があるか十分に理解できるはずです。もしそうでない場合は、予算とともに Marketplace で質問できます。
シリアライザーに外部依存関係をフックするのは非常に悪い考えだと思います @pfaffman
外部サービスがダウンしたり遅くなったりすると、フォーラムもダウンしてしまいます。
ああ。それは残念です。本当のようですね。![]()
@attj さん、これは私が言うことよりもリチャード氏の言うことを信頼する多くの事柄のうちの1つです。
ルートなどを追加する作業が必要になりますが、これはかなりの行数(おそらく数十行)になります。Discourse Category Home 🏠 はルートを追加する例だと思います。
プラグインを作成できたと思いますが、app.ymlに含めるためにGitHubに配置する必要があります。当然、トークンも公開されます。これを回避する方法はありますか?
インストール後にサイト設定からトークンを読み取り、そこに入力してください。
よくわかります。ありがとうございます!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.