У меня есть система для проверки, если пользователь вошел в систему, и если что-то не так с текущими куки, я хочу удалить все куки.
Я нашел способ сделать это с помощью этого кода:
public static void ResetCookkies(HttpResponse HttpResponse, HttpRequest HttpRequest)
{
foreach(var c in HttpRequest.Cookies.Keys)
{
HttpResponse.Cookies.Delete(c);
}
}
И этот код работает (ну, нет). Часть, которая не работает, это то, что я отправляю пользователя на какую-то страницу, но когда я проверяю его куки в браузере Chrome, они все еще там. Когда я обновляюсь или перехожу на любую другую страницу на сайте, они исчезают.
Я думал, что проблема не в том, чтобы отправить пользователя на другую страницу с return View("someView")
, а в попытке обновить страницу, поэтому я использовал return Redirect("/Page");
, но все равно не повезло.
Я запускаю эти две команды в следующем порядке:
NetworkClient.ResetCookkies(Response, Request);
return Redirect("/Admin");
Чтобы представить проблему, просто создайте функцию выше, затем создайте контроллер (temp1) и внутри Index
добавьте этот код:
CookieOptions co = new CookieOptions();
co.Expires = DateTime.Now.AddMinutes(30);
Response.Cookies.Append("temp", "asd", co);
return View();
затем создайте другой контроллер (temp2) и добавьте этот код:
NetworkClient.ResetCookkies(Response, Request);
return Redirect("/temp3"); //YOu need to create blank temp3
Теперь запустите приложение, перейдите к /temp1
(оно добавит cookie), затем перейдите к /temp2
, оно должно удалить его и отправить вам на temp3
, и это произойдет, но когда вы в первый раз попадете на файлы cookie temp3, затем обновите его, и они ушли
РЕДАКТИРОВАТЬ: Я только что проверил с отладкой, и это только ошибка в Chrome. Когда я отлаживаю, мой код становится пустым для этого куки, но в chrome он отображается.