سؤال

عبر هذا السؤال عقلي بعد قرأت هذا المنشور:"أخطاء الراحة الشائعة: الجلسات غير ذات صلة"

إذا كانت الجلسات تثبط بالفعل في تطبيق مريح. كيف يمكنك التعامل مع التراخيص في هذا التطبيق. أنا أشير على وجه التحديد إلى نموذج التراخيص المتزامنة وعدم تسمية التراخيص. أي العميل يشتري التراخيص X مما يعني أن التطبيق قد يسمح بتسجيل الدخول إلى X للمستخدمين في وقت واحد. مما يعني أن التطبيق يجب أن يحمل دولة للمستخدمين الذين قاموا بتسجيل الدخول الحالي.

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

إذا كنت سأعتمد النهج عديمي الجنسية واطلب من العميل إنشاء رمز مصادقة لكل طلب كيف سيكون التطبيق يعرف متى يستهلك وإصدار ترخيص لهذا العميل؟

هل هناك بديل؟ على وجه التحديد بديل أكثر مريحة؟

هل كانت مفيدة؟

المحلول

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

لا ينبغي موثوقة إدخال ملفات تعريف الارتباط أبدا بأي معلومات حرجة، ولكن يمكن أن تكون مفيدة للغاية للتحقق الإضافي مثل رمز الأمان. أعتقد أن إضافة حقل رمز أمان عشوائي إلى روابطك في الموقع سيكون النهج المريح لذلك. يجب أن تنتهي صلاحيته مع "الجلسة" بالطبع.

نصائح أخرى

قد ترغب في التفكير في دفع مخاوف التعامل مع الترخيص إلى انخفاض مستوى البنية التحتية. نوع من مثل نهج البرمجة الموجهة نحو الجانب (AOP) إذا كنت سوف. بدلا من التعامل معها في مستويات التطبيق، ربما، يمكنك دفعها إلى مستوى خادم الويب.

دون معرفة تفاصيل البنية التحتية الخاصة بك، من الصعب تقديم توصية محددة. باستخدام النظام الأساسي * NIX كمثال، يمكن تطبيق منطق معالجة الترخيص كوحدة نمطية لخادم Apache HTTP.

يعزز هذا النهج فصل الشواغل عبر مكدس البنية التحتية الخاصة بك. يسمح بكل طبقة بالتركيز على ما يهدف إليه. لا داعي للقلق طبقة التطبيق بشأن الترخيص على الإطلاق، مما يسمح لها بالتركيز بدقة على المحتوى، مما يجعل بدوره نظيفا عناوين URL ونظيفة "مريح".

إذا كان الترخيص الخاص بك يعتمد على المستخدمين المتزامنين، فإن تنفيذ HTTP Digest تافهة، وسوف يتيح لك تمكين فقط الحد الأقصى لعدد تسجيل الدخول المتزامن. يحتوي Digest على توفير بيانات انتهاء الصلاحية حتى يمكن توقيع دورتك.

تتمتع حالة المصادقة بموجب Authetnication HTTP وفي أي مكان آخر، Beause أنها شفافة وأكواخ.

ربما يكون هناك طريقة أكثر راحة لفعل التراخيص هي الحد من المعدل الذي يتم التعامل مع الطلبات، بدلا من عدد الدورات المتزامنة. تتبع عدد الطلبات في الساعة الأخيرة، وإذا تجاوز الرقم الذي دفعه العميل مقابل ذلك 503 Service Unavailable استجابة، جنبا إلى جنب مع بعض النص اقتراح المستخدم حاول مرة أخرى لاحقا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top