代码(在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;
}
基本上,我想使用session和cookie来“记住我”。 这是在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 :(得分: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);
}
我只是不知道我能做到这一点,因为在我记得我最后一次尝试时,它并没有为我工作。奇怪的是,没有使用这样的会话的示例和教程。我没有找到任何东西,互联网上的任何形式都会显示一个使用会话的例子,记住我'选项。我不知道为什么没有人回答我的问题,就这么简单。