【发布时间】:2018-03-16 03:15:23
【问题描述】:
代码(在 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;
}
基本上,我想使用会话和 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 没有改变。它被第一个超时设置卡住了。请帮我做,每次我注销和登录时,会话超时都会改变。
【问题讨论】:
-
stackoverflow.com/questions/3140341/… 这是一个重复的问题
-
亚伦。 S,您仅使用 cookie 向我发送了一个问题。我的问题是关于会话的。
-
该 cookie 存储在哪里?在会话中,对吗?
标签: c# asp.net session cookies