2017-10-04 60 views
1

代码(在Global.asax中):会话超时 - 如何正确记住我?

void Session_Start(object sender, EventArgs e) 
{ 
    // remember me 
    HttpCookie rememberCookie = HttpContext.Current.Request.Cookies["remember"]; 
    if (rememberCookie != null) 
    { 
     if (rememberCookie.Value == "true") 
      HttpContext.Current.Session.Timeout = 464800; 
     else 
      HttpContext.Current.Session.Timeout = 70; 
    } 
    else 
     HttpContext.Current.Session.Timeout = 60; 
} 

基本上,我想使 “记住我” 使用会话和饼干。 这是代码时,当第一次发射在home.aspx.cs

public void _loginFrmSubmit(object sender, EventArgs e) 
{ 
    Session["User"] = home_username.Text; 
    HttpCookie rememberCookie; 
    //rememberCookie.HttpOnly = true; 
    if (remember.Checked) 
    { 
     rememberCookie = new HttpCookie("remember", "true"); 
     rememberCookie.Expires = DateTime.Now.AddMonths(12); 
    } 
    else 
    { 
     rememberCookie = new HttpCookie("remember", "false"); 
     rememberCookie.Expires = DateTime.Now.AddDays(1); 
    } 
    HttpContext.Current.Response.Cookies.Add(rememberCookie); 
    Response.Redirect(Request.RawUrl); 
} 

代码工作正常登录。但是我注销后:

public void _Quit(object sender, EventArgs e) 
{ 
    HttpCookie rememberCookie = new HttpCookie("remember"); 
    rememberCookie.Expires = DateTime.Now.AddDays(-1); 
    Response.Cookies.Add(rememberCookie); 
    Session.Clear(); 
    Response.Redirect(Request.RawUrl); 
} 

而且我再次登录。 session.timeout没有改变。它遇到第一个超时设置。请帮助我每次注销并登录时,会话超时更改。

+0

https://stackoverflow.com/questions/3140341/how-to-create-persistent-cookies-in-asp-net这是一个重复的问题 –

+0

亚伦。 S,你只给我发个问题。我的问题是关于会议。 – David

+0

和那个cookie存储在哪里?在会话中,对吗? –

回答

0

好的,这对我来说是很愚蠢的,因为我不需要添加任何cookie并根据会话开始工作。我所要做的就是在aspx.cs(登录提交)本身中设置会话超时。

public void _loginFrmSubmit(object sender, EventArgs e) 
{ 
      Session["User"] = home_username.Text; 
      if (remember.Checked) 
       Session.Timeout = 464800; 
      else 
       Session.Timeout = 120; 
      Response.Redirect(Request.RawUrl); 
      Response.Redirect(Request.RawUrl); 
} 

我只是不知道我能做到这一点,因为它没有为我上次我记得我尝试过。奇怪的是,没有使用这样的会话的例子和教程。我没有找到任何东西,互联网上的任何表单都会显示使用“记住我”选项的会话示例。我不知道为什么没有人回答我的问题,这很简单。