سؤال

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

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

عرض المشكلة:إذا ترك المستخدم النظام لأكثر من n دقيقة في أي حالة تسجيل دخول معينة، فيجب على النظام تسجيل خروجه تلقائيًا.

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

المحلول 2

وقد تم تحقيق ذلك بالطريقة التالية:

1) احفظ الطابع الزمني لكل طلب (الخادم وأياكس باستثناء طلب التحقق من الجلسة) إلى الخادم في جلسة var.

2) قم باستقصاء الخادم عبر وظيفة JS باستخدام ajax على فترات زمنية متكررة وتحقق مما إذا كان الفرق الزمني بين الطابع الزمني للجلسة ووقت طلب ajax أكبر من قيمة مهلة الجلسة ثم قم بتسجيل خروج المستخدم الحالي وإرجاع منطقي لـ هذا الطلب اياكس.

3) أعد توجيه الصفحة الحالية إلى صفحة تسجيل الدخول إذا كان المنطق الذي تم إرجاعه صحيحًا.

نصائح أخرى

عند متابعة التعليقات بقدر السؤال، لست متأكدًا مما إذا كنت تسعى إلى شيء من شأنه تسجيل خروج المستخدم بعد وقت معين بغض النظر عن النشاط، أو بعد فترة من عدم النشاط.

إذا كنت سعيدًا باستخدام المعيار آليات ASP.NET, ، يمكن القيام بذلك نيابةً عنك دون أي عمل كبير:

قم بإعداد الخاص بك مزود العضوية.

تأكد من أن الخاص بك قسم المصادقة يحدد عنوان URL لتسجيل الدخول:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

يمكنك تعيين مهلة غير المهلة الافتراضية البالغة 30 دقيقة باستخدام سمة "المهلة" الموجودة على عنصر النماذج:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" timeout="15"/>
</authentication>

سيؤدي هذا إلى تسجيل خروج المستخدم بعد 15 دقيقة من عدم النشاط على موقعك (إما مع فتح المتصفح بدون "نبضات" جافا سكريبت أو إذا قضى 15 دقيقة على موقع آخر).

رفض الوصول إلى المستخدمين المجهولين

<authorization>
  <deny users="?" />
</authorization>

ثم تأكد من أن صفحات تسجيل الدخول والتسجيل وربما نسيت كلمة المرور الخاصة بك يمكن الوصول إليها لجميع المستخدمين الذين يستخدمون عنصر الموقع:

<location path="Logon.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<location path="Register.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<!-- etc -->

بهذه الطريقة، عندما تنتهي صلاحية ملف تعريف ارتباط المصادقة الخاص بالمستخدم، ستتم إعادة توجيهه إلى عنوان URL المحدد في عنصر تسجيل الدخول في صفحة النماذج الخاصة بك.


إذا كنت لا تستخدم آليات ASP.NET القياسية، فمن الأفضل أن تقوم بتنفيذ نموذج نوع "الصفحة الأساسية".

قم بإنشاء فئة جديدة ترث من System.Web.UI.Page والتي ستتحقق من حالة تسجيل الدخول للمستخدم، وإذا لم يتم تسجيل دخوله/انتهت مهلة ذلك، فقم بإعادة توجيهه إلى صفحة تسجيل الدخول الخاصة بك.

في الصفحات التي سيتم تأمينها، بدلاً من الوراثة من System.Web.UI.Page، يمكنك الوراثة من فئة صفحتك الأساسية (مثال على هذا النوع من الإعداد للقيام بشيء مماثل - تحقق من الإعداد في كل صفحة) شوهد في جوابي هنا


من المحتمل أن تحتاج صفحة تسجيل الدخول الخاصة بك إلى وجود بعض إطارات JS التي تخرق الإطار لتتمكن من القفز مرة أخرى خارج iFrame:

if (top!=self.parent){
  top.location=self.parent.location;
}

أم أنك تقول أنه بالضغط على "رجوع" لا يزال بإمكانهم رؤية صفحاتك من خلال ذاكرة التخزين المؤقت للمتصفح؟في هذه الحالة، ستحتاج إلى التلاعب برؤوس ذاكرة التخزين المؤقت في كل صفحة:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

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

<script type="text/javascript">
  setTimeout('location.Replace("/login.aspx")', 900000);
</script>

الوقت بالمللي ثانية، لذلك سيؤدي هذا إلى نقلها خلال 15 دقيقة، ولا داعي لوضع إطار عمل jQuery بالكامل في مكانه الصحيح فقط.

قد ترغب أيضًا في إلقاء نظرة على علامة التحديث التعريفي:

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />

مما سيجبر المتصفح على التحديث إلى صفحة تسجيل الدخول بعد 15 دقيقة (سيتم ذلك في ثوانٍ).

نظرًا لأنك لا تعرف من أين تبدأ، فقد تجد مقالة 4guys هذه مفيدة: http://www.4guysfromrolla.com/webtech/110701-1.shtml

يحرر

يبدو مثل توقيت مسج قد يكون مفيدًا إذا كنت تريد إعادة التوجيه إلى عنوان url بعد انقضاء فترة زمنية معروفة (أيفترة انتهاء الجلسة).

أتمنى أن يساعدك هذا.

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