سؤال

أنا أستخدم Symfony 1.4 مع العقيدة.

آسف إذا كان هذا سؤالًا سخيفًا ولكن ما الذي يحتاج المرء بالضبط للبناء عليه على قمة SFDOCTRineGuardPlugin للحصول على وظيفة "تذكرني"؟

عندما أقوم بتسجيل الدخول إلى مستخدم ، يتم إنشاء ملف تعريف الارتباط SFREMEMBER مع العمر الافتراضي لمدة 15 يومًا ، ويتم حفظ مفتاح تذكر في جدول SF_GUARD_REMEMBER_KEY الخاص بـ Plugin.

بدون أي تعديلات على المكون الإضافي ، تقوم طريقة SFGuardSecurityUser Signin () بإنشاء ملف تعريف الارتباط ، لكن طريقة Signout () تمحوها ، ولم تترك أي ملف تعريف ارتباط إلا إذا قمت بتسجيل الدخول!

Signin():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, $key, time() + $expiration_age);

Signout():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, '', time() - $expiration_age);

أستطيع أن أرى أن جدول قاعدة البيانات يحفظ ملف تعريف الارتباط كعلاقة لـ SF_GUARD_USER ، لكن هذا ليس جيدًا إذا ذهب ملف تعريف الارتباط ....

سأكون ممتنًا إذا كان بإمكان شخص ما أن يخبرني بما أفتقده هنا ، ومن الناحية المثالية ، إذا منعت طريقة التسجيل () من إزالة ملف تعريف الارتباط ، فهل أحتاج إلى كتابة رمز لقراءة ملف تعريف الارتباط بنفسي أم أن هذه الآلية في مكان ما/ بطريقة ما؟ لقد حصلت على منشآت Symfony 1.4 و SFDoctRineGuardPlugin.

كل شيء يبدو خاطئًا تمامًا والوثائق حول هذا غير موجود.

أي مساعدة ستقدر.

هل كانت مفيدة؟

المحلول

لماذا تريد الاحتفاظ بملف تعريف الارتباط المتذكر بعد تسجيل المستخدم؟

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

ولكن إذا قام بتسجيل الخروج ، فإننا نريد تسجيله بالكامل - وهذا هو السبب في أن تطهير ملف تعريف الارتباط تذكر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top