在后面的代码中访问会话变量

时间:2012-04-13 20:00:09

标签: asp.net

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Session["Authenticated"] )
        {
            Response.Redirect( "index.aspx", false );
        }
    }

登录后,我将会话设置为true。基本上,如果他们没有活动会话,我希望他们重新定向回索引/登录页面。我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Cookie,则可以在Cookie中存储标记,以便区分“新浏览器+新会话”和“旧浏览器+过期会话”之间的区别。

以下是示例代码,如果会话已过期,该代码将用户重定向到过期页面。

void Session_OnStart(Object sender, EventArgs e) 
{ 
  HttpContext context = HttpContext.Current;
  HttpCookieCollection cookies = context.Request.Cookies; 
  if (cookies["starttime"] == null) { 
    HttpCookie cookie = new HttpCookie("starttime", DateTime.Now.ToString()); 
    cookie.Path = "/"; 
    context.Response.Cookies.Add(cookie); 
  } 
  else { 
    context.Response.Redirect("expired.aspx"); 
  } 
}

如果您尝试实施会话,这可能会对您有所帮助http://aspalliance.com/1621_Implementing_a_Session_Timeout_Page_in_ASPNET.2

答案 1 :(得分:1)

使用此检查

if(Session["Authenticated"] == null || !(bool)Session["Authenticated"])