كيفية تسجيل خروج المستخدم بالكامل ومسح بيانات OAuth

لذا، أواجه تحديًا في منطق تسجيل الخروج.

نحن نستخدم تكوين Auth0 مع Discourse OAuth2 والمشكلة هي أنه عندما نقوم بتشغيل تسجيل الخروج باستخدام currentUser.destroySession()، يتم إنهاء جلسة Discourse حيث تم تسجيل خروج المستخدم ولكن بيانات OAuth لا تزال مخزنة مؤقتًا بطريقة ما؟

ماذا أعني هنا؟

السياق: عندما تستخدم تسجيل الدخول الأحادي (SSO)، تتوقع أنه عندما يسجل المستخدم الخروج من موقعك، في المرة التالية التي يحاولون فيها تسجيل الدخول مرة أخرى، سيتم توجيههم من موقعك إلى صفحة SSO حيث يمكنهم إدخال بيانات اعتمادهم وبمجرد المصادقة، سيتم إعادة توجيه المستخدم مرة أخرى إلى موقعك مع جلسة نشطة.

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

وهذا يعني أساسًا أنني عالق مع هذا المستخدم، ولا يمكنني التغيير إلى حساب مستخدم مختلف، إلا ربما إذا استخدمت وضع التصفح المتخفي أو متصفحًا مختلفًا تمامًا :frowning:

التوقع: بمجرد النقر على تسجيل الخروج، في المرة التالية التي أحاول فيها تسجيل الدخول مرة أخرى، يجب أن يتم توجيهي إلى صفحة Auth0 SSO الخاصة بي حيث يمكنني القيام بما هو مطلوب ثم سيتم إعادة توجيهي مرة أخرى إلى منتدى Discourse.

يبدو أن هناك مشكلة في currentUser.destroySession() حول كيفية مسح الجلسة بالإضافة إلى بيانات OAuth؟

لقد اختبرت أيضًا عن طريق إجراء استدعاء API يدويًا لتدمير جلسة المستخدم، ولا تزال النتائج كما هي، لا تحسينات:

fetch(`https://MY_FORUM.discourse.group/admin/users/USER_ID/log_out`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Api-Key': 'API_KEY',
    'Api-Username': 'ADMIN_USERNAME',
  },
})

يرجى مشاركة الأفكار حول هذا إذا كانت لديك فكرة عن كيفية إصلاح/التعامل مع تسجيل الخروج عند استخدام OAuth.

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