إخفاء رمز API في مكون سمة

لدي مكون سمة يقوم بإرسال طلب إلى واجهة برمجة تطبيقات خارجية لجلب بعض البيانات أثناء تحميل الصفحة. ومع ذلك، فإن رمز الحامل (Bearer token) الذي أستخدمه لجلب هذه البيانات يتم تحميله بشكل طبيعي في البرنامج النصي الذي يمكن للعميل الوصول إليه. هل هناك طريقة لإنشاء مكون إضافي أو شيء من هذا القبيل لتمكيني من إخفاء هذه المعلومات؟

إعجاب واحد (1)

نعم، يجب عليك بالفعل إنشاء إضافة (plugin) وتحديد طريقة وحدة تحكم (controller method) تجلب البيانات لك.

بعد ذلك، من رمز الواجهة الأمامية (frontend code)، قم باستدعاء طريقة وحدة التحكم، التي تقوم بحقن رمز الحامل (bearer token) من جانب الخادم، وهو غير متاح لأي طرف ثالث، وتقوم بالاتصال بواجهة برمجة التطبيقات الخارجية (external API).

4 إعجابات

بدلاً من إنشاء وحدة تحكم جديدة للقيام بذلك (وهو ما لم يوصِ به ريتشارد بوضوح)، يمكنك إضافته بسهولة إلى مُسلسِل (serializer) موجود، شيء مثل

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

معرفة المُسلسِلات المتاحة وأيها تريد يجب أن يكون بسيطًا بما فيه الكفاية (معظمها سهل التخمين، ولكن يمكنك العثور عليها في app/serializers). البحث في GitHub - discourse/all-the-plugins عن add_to_serializer يجب أن يوفر أمثلة كافية. وابدأ بـ GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins.

حتى لو كنت لا تعرف Ruby أو Rails، فإن ما سبق يجب أن يعطيك فكرة جيدة عما تحتاج إلى القيام به. إذا لم يكن الأمر كذلك، يمكنك السؤال في Marketplace مع تحديد ميزانية.

أعتقد أنها فكرة سيئة للغاية ربط تبعية خارجية بمُسلسل @pfaffman
إذا تعطلت الخدمة الخارجية أو أصبحت بطيئة، فسيتعطل منتداك أيضًا.

إعجابَين (2)

أوه. حسنًا، اللعنة. هذا يبدو صحيحًا. :person_shrugging:

@attj، هذه واحدة من العديد من الأمور التي أثق فيها بما يقوله ريتشارد أكثر مما أقوله.

أخشى أنك ستحتاج إلى القيام بالعمل لإضافة مسار وما إلى ذلك، وهو ما يتطلب بضعة أسطر إضافية من التعليمات البرمجية (ربما عشرات فقط). أعتقد أن Discourse Category Home 🏠 هو أحد الأمثلة التي تضيف مسارًا.

4 إعجابات

أعتقد أنني تمكنت من كتابة إضافة ولكن أحتاج إلى وضعها على جيت هاب لتضمينها في ملف app.yml الخاص بي. وهذا يكشف الرمز المميز بشكل طبيعي أيضًا. هل هناك طريقة لتجاوز هذا؟

إعجابَين (2)

اقرأ الرمز المميز من إعداد موقع وأدخله هناك بعد التثبيت.

3 إعجابات

منطقي جداً. شكراً!

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.