为什么没有删除cookie并且用户仍然登录

时间:2011-08-29 08:10:32

标签: asp.net-mvc authentication authorization

我在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并且用户没有注销。

2 个答案:

答案 0 :(得分:2)

您尚未提及Cookie到期时间。您也可以使用Session.Clear();清除所有会话。

在页面On_Load()函数中创建一个使用Session.Clear();函数的注销页面。这样可以清除页面中创建的所有会话。

答案 1 :(得分:1)

在您到达cookie的到期日之后,您是否在检查cookie是否已被删除之前向网站提出请求?因为在您提出请求之前cookie不会被删除。