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

Sam*_*m M 5 asp.net asp.net-mvc-3

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

 Cookie.setCookie(No,DOB,User); 
Run Code Online (Sandbox Code Playgroud)

使用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);
        }
Run Code Online (Sandbox Code Playgroud)

以上是我的Setcookie代码.

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

我尝试的是当用户点击注销时,cookie应该被完全清除,用户不应该能够导航到站点的任何Authenticated部分.我也试过这个但没用

MyCookie.Expires.Add(-1);
Run Code Online (Sandbox Code Playgroud)

但我在我的SetCookie方法中尝试过这种方法.当用户单击"注销"时,如何清除cookie.我也尝试在Cookie类中创建一个Logout方法,如下所示:

  public static bool logout()
        {

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

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

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

Jef*_*hao 8

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

  • 错过了一件小事.HttpContext.Current.Response.Cookies.Add(reqCookies); 只需要再次添加cookie感谢您的回复 (2认同)

bob*_*bek 1

您可以为此使用 jquery cookie 脚本。

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

function removeCookie(){
$.cookie('cookiename', '');
}
Run Code Online (Sandbox Code Playgroud)