如何在Asp.Net MVC3中单击注销时删除cookie

时间:2011-12-10 06:12:31

标签: asp.net asp.net-mvc-3

我有一个带有两个用户的asp.net MVC3应用程序为这两个用户保存了Admin和General.Cookies。 以下是我的cookie保存方式。

 Cookie.setCookie(No,DOB,User); 

使用方法setCookie

创建一个Cookie
 public static void setCookie(int No,DateTime DOB,string User)
        {
            HttpCookie MyCookie= new HttpCookie("MyCookie");
            MyCookie["No"] = No;
            MyCookie["DOB"] = DOB;
            MyCookie["User"] = User;

            MyCookie.Expires.Add(new TimeSpan(0,30,0));

            HttpContext.Current.Response.Cookies.Add(MyCookie);
        }

以上是我的Setcookie代码。

MyCookie.Expires.Add(new TimeSpan(0,30,0));will give the default expiry time to 30 minutes.

我尝试的是当用户单击“注销”时,cookie应该被完全清除,用户不能导航到站点的任何经过身份验证的部分。 我也尝试了这个,但没有用

MyCookie.Expires.Add(-1);

但是我已经在我的SetCookie方法中试过了。如何在用户点击Logout时清除cookie。 我也尝试在Cookie类中创建一个Logout方法,如下所示:

  public static bool logout()
        {

            HttpCookie reqCookies = HttpContext.Current.Request.Cookies["MyCookie"];
            reqCookies.Expires.AddDays(-1);
            return true;
        }

此处我正在尝试使用已保存的Cookie并通过设置.AddDays(-1);使其过期 我正在使用if cookie.Logout()==true并将其重定向到我的主页。 但它在RunTime上给了我以下错误 添加或减去的值会导致无法表示的DateTime。 参数名称:值

关于如何实现目标的任何建议/指导。

2 个答案:

答案 0 :(得分:8)

要清除ASP.NET中的cookie,您需要设置一个具有相同名称且具有过期时间的新cookie。

答案 1 :(得分:1)

您可以使用jquery cookie脚本。

<a href="" onclick="removeCookie();">logout button</a>

function removeCookie(){
$.cookie('cookiename', '');
}