在登录页面中检测表单身份验证超时

时间:2009-08-29 22:00:01

标签: asp.net security timeout forms-authentication

当您在访问受保护的页面时将表单身份验证设置重定向到login.aspx时,在login.aspx中检测用户是否因为尚未登录而未被登录,或者是因为他们的表单是一种好方法身份验证票已过期?我想显示一个“你已经超时”的消息。

(我在这个问题中没有提到会话这个词,因为ASP.NET如此清楚地对待它们,但是,如果有一个很好的解决方案涉及会话,我会全力以赴)

我过去通过在用户登录时设置另一个cooke“hasloggedin”来解决这个问题,然后检查是否存在以确定它是否超时然后显示相应的消息。但是,这必须是一个常见的问题吗?

1 个答案:

答案 0 :(得分:2)

表单身份验证将自动附加一个URL参数“ReturnURL”,指示哪个页面(如果有)触发了重定向到登录页面。大多数网站都有“Default.aspx”或“index.html”等作为默认页面。您可以检查ReturnURL以查看它是否包含默认页面或应用程序中的其他页面。

实施例

string refererURL;
if (page.Request.QueryString["ReturnURL"] != null)
{
    refererURL = page.Request.QueryString["ReturnURL"].ToString();
}

//Check to see if user was redirected because of Timeout or initial login
//Where "Default.aspx" is the default page for your application
if (refererURL != "" && refererURL != (ResolveUrl("~") + "Default.aspx"))
{
    //Show HTML etc showing session timeout message 
}
else // User redirected here to to initial login
{
    //Show HTML showing initial login HTML message etc
}