سؤال

وأظل الدورة متغير عندما يقوم المستخدم بتسجيل الدخول.بحيث عندما يقوم المستخدم بالنقر فوق على btnLogout أنه يجب مسح جميع جلسات تسجيل المستخدم من أجل الخير!!!

فإنه من الواضح جلسات بلدي ولكن إذا كنت اضغط على زر العودة في أي مباشرة بعد تسجيل الخروج ثم أنا لا تزال تسجيل الدخول!بمعنى أنه يعود إلى الشاشة حيث أن المستخدم لا يزال تسجيل الدخول.

قانون بلدي على تسجيل الخروج

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

لماذا و كيف يمكن منع هذا ؟

تحرير: هو ربما يكون هناك خيار في رمز أستطيع أن أفعل ذلك سيتم تعطيل المستخدم عن طريق الضغط على زر العودة في شبكة الإنترنت Browzer?

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

المحلول

يمكنك وضع هذا في Page_Init الرئيسي الخاص بك:

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

هذا هو مثل ما معظم البنك المواقع بحيث لا يمكن استخدامها بشكل فعال على الزر مرة أخرى.

نصائح أخرى

هذا هو حقا مشكلة مع ذلك ؟ نعم يمكنهم رؤية الصفحة السابقة كما كان مؤقتا ، ولكن بمجرد محاولة لجعل أي الطلبات المشروعة في هذا السياق هذه سوف تفشل كما متغيرات جلسة ولت.

لم يكن لديك سبب محدد جدا بالنسبة الترميز حول هذا سيكون حل مشكلة لا وجود له في الواقع.

هناك عدة طرق يمكنك أن تخبر المتصفح أن لا ذاكرة التخزين المؤقت الصفحة إما من التعليمات البرمجية-خلف, جافا سكريبت أو HTML باستخدام التالية على الصفحة

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

كما تم ممارسة جيدة لإضافة في الحدث page_load في التعليمات البرمجية-خلف بعض التعليمات البرمجية للتأكد من أن الدورة متغير لا يزال موجودا في الواقع.

متصفح يحافظ على ذاكرة التخزين المؤقت الصفحة هكذا ببساطة ضرب الظهر لا تجعل طلب إلى الخادم لمعرفة ما إذا كنت لا تزال تسجيل الدخول.سيكون لديك لاستخدام HTTPS لضمان ذاكرة التخزين المؤقت محمي أيضا.

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