مرحبًا ، شكرًا أولاً على هذه الحزمة ، إنها سهلة الاستخدام حقًا.
إذا فهمت بشكل صحيح ، عند استخدام مخزن نظام الملفات للجلسات ، فإن ملفات تعريف الارتباط للجلسة التي يحصل عليها العميل تحتوي فقط على معرفات الجلسات (لأنها ليست CookieStore). تسترد الواجهة الخلفية عند طلب http الجلسة من نظام الملفات وتحميلها في الذاكرة (أو مرة واحدة في الذاكرة وتحتفظ بها للطلبات اللاحقة).
لماذا لا توجد وظيفة لإزالة الجلسات من مخزن نظام الملفات / في الذاكرة؟
السيناريو الحالي الخاص بي هو التالي ؛ عندما يقوم المستخدم بتسجيل الخروج ، أريد حذف الجلسة:
ومع ذلك ، طالما لم أغير المفتاح الخاص لتوقيع ملفات تعريف الارتباط مطلقًا ، فستظل الجلسة صالحة إلى الأبد.
يمكنني التغلب على هذه المشكلة من خلال وجود علامة على كائن الجلسة تشير إلى أن الجلسة لا تزال صالحة ولكن هذا من شأنه أن يترك لي يدويًا الاضطرار إلى إزالة الجلسات من مخزن نظام الملفات.
هل من الممكن إضافة وظيفة مثل filesystemStore.RemoveSession(id string)
للسماح للمخزن بتنظيف الجلسة من نظام الملفات والجلسات المحملة في الذاكرة؟
سيؤدي تعيين sess.MaxAge(-1)
ثم الاتصال بـ sess.Save
إلى حذف الجلسة: https://github.com/gorilla/sessions/blob/master/store.go#L213 -L223
محرر المستندات هنا: http://www.gorillatoolkit.org/pkg/sessions#FilesystemStore.Save
يضيف حفظ جلسة واحدة إلى الاستجابة.
إذا كانت Options.MaxAge للجلسة <= 0 فسيتم حذف ملف الجلسة من مسار المخزن. من خلال هذه العملية ، فإنه يفرض التعامل الصحيح مع ملفات تعريف الارتباط للجلسة ، لذلك لا داعي للثقة في إدارة ملفات تعريف الارتباط في متصفح الويب.
نأمل أن يوضح ذلك.
الإغلاق - يرجى إعادة الفتح إذا كان لديك أي أسئلة!
إذا كنت تتساءل عن كيفية التعامل مع الحالة مع ملفات الجلسة المتقادمة ، على سبيل المثال ، تمت مصادقة بعض الجلسات في الوضع الخاص بالمتصفح وبعد ذلك ، من الواضح أنه لن يعود إلى تسجيل الخروج ويعطي إشارة لإزالة ملف الجلسة ، فهل هناك أي طريقة موصى بها للتعامل مع مثل هذه الحالة ؟
التعليق الأكثر فائدة
سيؤدي تعيين
sess.MaxAge(-1)
ثم الاتصال بـsess.Save
إلى حذف الجلسة: https://github.com/gorilla/sessions/blob/master/store.go#L213 -L223محرر المستندات هنا: http://www.gorillatoolkit.org/pkg/sessions#FilesystemStore.Save
نأمل أن يوضح ذلك.