जब मेरा एएसपी.Net सत्र समय समाप्त होता है (और प्रमाणीकरण भी बनाता है) और मैं एक पृष्ठ को हिट करने का प्रयास करता हूं, तो मुझे स्वचालित रूप से मेरे डिफ़ॉल्ट login.aspx पृष्ठ पर रीडायरेक्ट कर दिया जाता है।एएसपी.Net सत्र टाइमआउट पहचान: सत्र है। नया सत्र और सत्र कुकी यह करने का सबसे अच्छा तरीका है?
पेज लोड से पहले मुझे यह निर्धारित करने की आवश्यकता है कि यह एक टाइमआउट स्थिति है और यदि ऐसा है - टाइमआउट.एएसपीएक्स पर रीडायरेक्ट करें।
नीचे दिए गए लेख निर्दिष्ट करते हैं कि यदि IsNewSession सत्य है, और एक sessionID कुकी मौजूद है - तो आपके पास टाइमआउट स्थिति है।
हालांकि मेरे परीक्षण में मेरे पास ऐसी स्थिति है जहां मैं टाइमआउट करता हूं और फिर से लॉग इन करने का प्रयास करता हूं और IsNewSession सत्य के बराबर है और सत्र आईडी कुकी अभी भी लटक रही है (क्योंकि यह पूरे ब्राउज़र सत्र के लिए रहता है), इसलिए यह कहता है जब मैं बस वापस लॉग इन करने की कोशिश कर रहा हूं तो मैंने फिर से समय निकाल दिया है।
क्या यह सब करने का कोई बेहतर तरीका है?
तकनीक here और here निर्धारित की गई है।
मेरे 'Global.asax' फ़ाइल में मेरे पास है:
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
// Check if session state is enabled in web.config
if (Context.Session == null) return;
if (Session["user"] == null)
{
if (Session.IsNewSession)
{
HttpCookie sessionCookie = Request.Cookies["ASP.NET_SessionId"];
if ((null != sessionCookie) && !string.IsNullOrEmpty(sessionCookie.Value))
{
/* Session Timeout! */
FormsAuthentication.SignOut(); //just in case not done yet
Session.Abandon();
Response.Redirect("timeout.aspx");
}
else
{
// Cookie didn't exist - must be a brand new login
return;
}
}
else
{
// If there is no session data and the session is not new then it must be the postback of the login screen.
if ((HttpContext.Current.Request.Path.ToLower().LastIndexOf("/login.aspx") >= 0) && (Request.HttpMethod == "POST"))
{
return;
}
}
}
}