يتم تشفير ملفات تعريف الارتباط للجلسة باستخدام مفتاح سري يتم إنشاؤه عشوائيًا، والذي يتم تخزينه افتراضيًا في Redis. لا يتم تضمين بيانات Redis في النسخ الاحتياطي، لذا يتم إعادة إنشاء مفتاح سري جديد عند استعادة الموقع على خادم جديد.
يمكنك تعيين المفتاح السري يدويًا باستخدام متغير بيئة DISCOURSE_SECRET_KEY_BASE في ملف app.yml الخاص بك. لذا، يمكنك تجربة شيء مثل هذا للحفاظ على الجلسات:
-
على الخادم الحالي، أدخل وحدة التحكم وابحث عن المفتاح السري من Redis
pry(main)> GlobalSetting.safe_secret_key_base => "5fb9dc98be368599e0a..." -
أضف
DISCOURSE_SECRET_KEY_BASEإلى قسمenv:في ملف app.yml على الخادم القديم، باستخدام القيمة التي وجدتها في (1)، ثم أعد بناء التطبيق. نظريًا، إذا سار كل شيء على ما يرام، يجب أن يستخدم Discourse الآن القيمة من ملف app.yml، وستستمر جلسات المستخدمين. يمكنك التحقق من استخدام متغير البيئة بتشغيلGlobalSetting.secret_key_base -
تأكد من أن ملف app.yml على الخادم الجديد يحتوي على نفس
SECRET_KEY_BASE. عند استعادة النسخة الاحتياطية، يجب أن تستمر جلسات المستخدمين.
لم أقوم باختبار هذه العملية، لذا إذا كنت تخطط لاستخدامها في منتدى إنتاجي، فتأكد من تجربتها أولاً!
ملاحظة جانبية: يجب ألا تشارك المفتاح السري بين مثيلات Discourse متعددة. فامتلاك المفتاح السري قد يسمح لشخص ما بفك تشفير وتعديل ملف تعريف الارتباط للجلسة على موقع ما، مما قد يؤدي إلى عواقب أمنية سيئة للغاية.