DCSIMG
Redirect to login page in Session_End event - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Redirect to login page in Session_End event

 

טוב, אי אפשר באמת לעשות את מה שכתבתי בכותרת, מכיוון שהשרת מפעיל את האירוע של Session_End והחוק הידוע של http, שחייב להיות Request כדי שיחזור Response.
 
אבל אם אתם בכל זאת רוצים שכשנגמר ה - Seesion במידה והדפדפן עדיין פתוח שזה יעבור בצורה אוטומטית לדף הלוגין
תוכלו לכתוב את הקוד הזה: (במתודת Page_Load - וממולץ שיהיה לכם דף PageBase שכל הדפים יורשים ממנו ושם תכתבו את הקוד הזה)
 

Response.AddHeader("Refresh", Convert.ToString((Session.Timeout * 60) + 5));

 

if (Session.IsNewSession)

{

    Response.Redirect("Login.aspx");

}

 
 
השורה הראשונה תגרום לריענון של הדף חמש שניות אחרי שה - Seesion_End קרה.
 
במידה ומדובר בגישה של ראשונה של ה - Session הזה (מה שיהיה נכון) נעבור לדף הלוגין.
 
 
הרעיון והמימוש הגיע מכאן.

תוכן התגובה

Rotem Bloom כתב/ה:

שלמה סתם הערה קטנה עדיף שמשתמשים ב-Response.Redirect להשתמש ב-overload עם false. זאת כדי למנוע Exception בזמן Response.Redirect עניין של ביצועים.

כלומר בעצם להשתמש ב-

Response.Redirect("Login.aspx, false");

חוץ מזה טריק מאוד נחמד תודה

רותם

# December 24, 2009 9:10 AM

משה כתב/ה:

רותם - לא הבנתי.

ה-false שם מייצג בסך הכל שהדף ימשיך להתבצע (התנהגות לא רצויה בכלל אם ה-REDIR משמש לאבטחה).

# December 24, 2009 6:21 PM

Rotem Bloom כתב/ה:

ה- false מונע  ThreadAbortException שמתבצע בגלל קריאה ל-Response.End אם לא מתשמשים ב-false.

אם אתה ככה דקדקן בביצועים מומלץ להמנע מה- ThreadAbortException ולהשתמש ב-false.

מקווה שהבהרתי את עצמי.

ביי רותם

# December 27, 2009 9:21 AM

שמואל כתב/ה:

פעם השתמשתי בWEBMAIL של איזו חברה

היא שמרה את הקונקשן בסשן, ולכן היא יצרה אירוע בJAVASCRIPT שקיבל תזמון של דקה לפני סיום הסשן.

ואז היה מופיע על המסך טיימר שיורד ומתריע "בעוד X שניות אתה מתנתק, לחיבור מחדש לחץ כאן" כשהלינק פשוט עשה ריפרוש לדף [ולסשן]

# June 16, 2010 10:39 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 5 and 3 and type the answer here:


Enter the numbers above: