يسجل المستخدم (أ) الدخول إلى موقعي ثم ينقر على “المنتديات” في الموقع. يتم إعادة توجيهه إلى Discourse، الذي يستدعي موقعي عبر SSO، فيتم توثيقه وتسجيله تلقائياً في Discourse. رائع، يعمل بشكل مثالي.
بعد مرور بعض الوقت، يغادر المستخدم (أ) الجهاز وينتهي جلسته تلقائياً. لم يقم بالتحديد بالنقر على “تسجيل الخروج” في تطبيقي أو في Discourse.
يسجل المستخدم (ب) الدخول إلى موقعي على نفس الجهاز، وينقر للدخول إلى المنتديات، وبما أن Discourse لا يزال لديه المستخدم (أ) مسجلاً للدخول، فإنه لا يستدعي SSO لأن جلسة Discourse لا تزال نشطة. الآن، تم تسجيل دخول المستخدم (ب) إلى Discourse باسم المستخدم (أ). :-\
هل يمكنك توضيح ما تقصده بهذا؟ ما هو طول مدة الجلسة لتطبيقك؟ وكيف تتعامل أنت مع انتهاء صلاحية الجلسة هناك؟
يحتوي Discourse على إعداد يُدعى maximum session age (أقصى عمر للجلسة)، وهو مضبوط افتراضيًا على 1440 ساعة، أي ما يعادل 60 يومًا.
باختصار، إذا لم تكن تعرف أن المستخدم الموجود أمام الحاسوب قد تغير، فلا يمكنك فعل شيء بسهولة لمنع ذلك. يمكنك تقليل مدة الجلسة، أو استدعاء تسجيل خروج المستخدمين دوريًا من تطبيقك، لكن في هذه الحالة، إذا قضى مستخدموك فترات طويلة أمام الحاسوب، فسيجدون أنفسهم مضطرين للعودة إلى عملية المصادقة.
يمكن لـ Discourse تمديد أي تدفق تسجيل دخول وجلسات تستخدمه حاليًا، لكن دون معلومات إضافية حول ما ذُكر أعلاه، يصعب تحديد المشكلة بالضبط أو الفرص المتاحة.
شكرًا لك على ردك! أدركت أن هذه المشكلة تتعلق في النهاية بإدارة المستخدم في الموقع الرئيسي.
إذا قام المستخدم بتسجيل الخروج يدويًا من الموقع الرئيسي، فيجب عليّ استدعاء Discourse (عبر واجهة برمجة التطبيقات) لتسجيل خروجه هناك أيضًا.
وإذا لم يقم المستخدم بتسجيل الخروج ولكن انتهت صلاحية جلسته، فيجب عليّ استدعاء Discourse لتسجيل خروجه هناك في نفس الوقت.
وأخيرًا: عندما يسجل المستخدم الخروج من Discourse باستخدام “تسجيل الخروج” هناك، أحتاج إلى التقاط هذه العملية (عبر الويب هوك) وتسجيل خروجه في موقعي أيضًا.