لقد بحثتُ حول الموضوع ووجدتُ بعض المواضيع ذات الصلة، لكنها تركز في الغالب على SSO، وهو غير مُعدّ لدينا.
لدينا مصادقة قياسية في Discourse، بالإضافة إلى المصادقة عبر إضافة OAuth2.
لدينا بعض الفئات التي تتطلب أن يكون المستخدم ضمن مجموعة مستخدمين محددة.
إذا أنشأنا رابطًا لمستخدم غير مسجل الدخول إلى الفئة المحمية (وهو عضو في المجموعة المناسبة)، فسيظهر له صفحة 404/آسف العادية. وعندها عليه أن يغادر الصفحة، يسجل الدخول، ثم يعود بالبحث للوصول إلى تلك الفئة المحمية.
هل هناك طريقة إما للربط بصفحة /login مع توفير عنوان URL لإعادة التوجيه إلى الفئة المخفية، أو تغيير إعداد ما يطلب تسجيل الدخول عند محاولة الوصول إلى تلك الفئة المحمية؟
أعتقد أن هذه فكرة رائعة. بالنسبة للعديد من أنواع المنتديات، فإن تحديد أن شيئًا ما موجود ليس ثغرة أمنية، وسيحسن إمكانية الوصول بشكل كبير.
التحدي الحقيقي هنا يكمن في تسمية إعداد الموقع بشكل صحيح وشرح وظيفته. لقد بذلت قصارى جهدي أدناه، لكنني لست ضد أي تعديلات.
إليك مواصفة مصغرة:
إضافة إعداد موقع جديد detailed_404، قيمته الافتراضية false. “يوفر للمستخدمين تفاصيل أكثر حول سبب عدم قدرتهم على الوصول إلى موضوع معين. ملاحظة: هذا أقل أمانًا لأن المستخدمين سيعرفون ما إذا كان الرابط يحتوي على موضوع صالح أم لا.”
عند التفعيل، في وحدة تحكم الموضوع، إذا فشلت عملية التحقق من الحارس (guardian)، أعد كائن JSON يحتوي على تفاصيل حول سبب الفشل.
في تطبيق الواجهة الأمامية، استخدم هذه التفاصيل لعرض رسالة خطأ مناسبة:
إذا كان المستخدم مجهولًا: “عذرًا، ستحتاج إلى تسجيل الدخول لعرض هذا الموضوع”
إذا كان المستخدم مسجل الدخول:
إذا كان الموضوع مقيدًا بمجموعة واحدة (باستثناء مجموعات الموظفين): “هذا الموضوع مقيد بمجموعة GROUP_NAME.” وأدرج زر طلب الوصول.
إذا كان الموضوع مقيدًا بعدة مجموعات، اعرض رسالة عامة: “ليس لديك حق الوصول إلى هذا الموضوع. يرجى التواصل مع الشخص الذي زودك بالرابط لطلب الوصول.”}