我在MVC3中有登录功能。
private bool UserControll(string name, string password, string token = null)
{
User user;
user = userRepos.LogOn(name, password, Request.ServerVariables["REMOTE_ADDR"]);
if (user.IsAuthenticated)
{
FormsAuthenticationTicket authTicket;
authTicket = new FormsAuthenticationTicket(1, user.SessionId, DateTime.Now, DateTime.Now.AddMinutes(1), false, "");
string cookieContents = FormsAuthentication.Encrypt(authTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents)
{
Expires = authTicket.Expiration,
Path = FormsAuthentication.FormsCookiePath,
};
HttpContext.Response.Cookies.Add(cookie);
}
我无法弄清楚为什么在1分钟后没有删除cookie(仅用于测试,请查看DateTime.Now.AddMinutes(1))。当我在会话开始时检查FireFox中的cookie时,显示:Expires:29.08.2011 12:07(当前时间+一分钟)。一分钟后显示:到期:会话结束时。会话未删除,用户未注销。
我无法理解为什么没有删除cookie并且用户没有注销。
答案 0 :(得分:2)
您尚未提及Cookie到期时间。您也可以使用Session.Clear();
清除所有会话。
在页面On_Load()函数中创建一个使用Session.Clear();
函数的注销页面。这样可以清除页面中创建的所有会话。
答案 1 :(得分:1)
在您到达cookie的到期日之后,您是否在检查cookie是否已被删除之前向网站提出请求?因为在您提出请求之前cookie不会被删除。