Как я могу удалить этот файл cookie?ASP.NET MVC - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь удалить этот файл cookie: enter image description here

Прежде всего немного фона. Это токен для проверки на разных сайтах в пределах одного домена. Я делаю центральную страницу входа. Эта страница работает нормально, кроме выхода. Любой другой файл cookie, который я хочу удалить, удаляется файлом cookie JQuery $.removeCookie('cookieName'). И я знаю, что не могу удалить это из JavaScript из-за флага безопасности.

Итак, я попытался удалить его из метода контроллера. Я вызываю этот метод через ajax из JavaScript.

$.ajax({ur:'/Login/ExpireToken'})

Я вижу, что он работает на вкладке «Сеть» консоли Chrome.

 public void ExpireToken()
 {
      Response.Cookies.Remove("crowd.token_key");
 }

Но это, я не знаю почему, создает новый файл cookie с тем же именем, пустым значением, всем доменом страницы входа и без установленных флагов.

Итак, я проверил, может ли бэкэнд найти нужное мне печенье.

 public string ExpireToken()
 {
        return Response.Cookies["crowd.token_key"].Value;
 }

Возвращает правильное значение и не создает новое / ложное.

После этого я попытался установить для поля expires один день в прошлом или сейчас. Я не знаю, почему это должно работать, потому что срок годности этого куки уже в прошлом.

public void ExpireToken()
{
   Response.Cookies["crowd.token_key"].Expires = DateTime.Now.AddDays(-1d);
} 

И угадайте что, это не работает. Это буквально ничего не делает.

Другие способы, которые не работают

if (Request.Cookies["crowd.token_key"] != null)
{
     var c = new HttpCookie("crowd.token_key");
     c.Expires = DateTime.Now.AddDays(-1);
     Response.Cookies.Add(c);
}

1 Ответ

0 голосов
/ 13 сентября 2018

Как и в соответствии с документом , вы все делаете правильно в своей попытке las, которая устанавливает дату истечения срока на вчерашний день.Цитата:

Метод состоит в том, чтобы создать новый файл cookie с тем же именем, что и файл cookie, который нужно удалить, но установить дату окончания срока действия файла cookie раньше, чем сегодня.Когда браузер проверяет истечение срока действия cookie, браузер отбрасывает устаревший cookie

. Я бы поставил точку останова и отладил, чтобы проверить имена файлов cookie, если все в порядке, возможно, веб-браузер работает неправильно.

HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i=0; i<limit; i++)
{
    cookieName = Request.Cookies[i].Name;
    aCookie = new HttpCookie(cookieName);
    aCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(aCookie);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...