Есть ли API для очистки анонимных файлов cookie?
Очистить анонимную идентификацию?
Ответы (4)
Да!
System.Web.Security.AnonymousIdentificationModule.ClearAnonymousIdentifier()
См. Эту полезную статью: (Перенос настроек анонимного пользователя)
Также лучший способ перенести анонимный профиль на вопрос stackoverflow.
Изначально у меня возникла проблема с «AnonymousIdentificationModule.ClearAnonymousIdentifier ()». Ошибка: «ClearAnonymousIdentifier не поддерживается, если функция отключена или пользователь является анонимным».
Эта проблема возникает только при попытке очистить анонимный идентификатор, когда пользователь itsef является анонимным пользователем. Означает, что анонимный пользователь не может очистить cookie другого анонимного пользователя.
Для этого поместите код в случае, когда пользователь аутентифицирован (вошел в систему), например:
if(Request.IsAuthenticated)
{
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
Это поможет.
Я использую MVC4, и в моем сценарии я хочу иметь возможность удалить анонимный файл cookie, чтобы новый автоматически создавался, даже если пользователь никогда не входит в систему. (Чтобы тестерам не приходилось удалять свои файлы cookie каждые раз они хотят вернуться на сайт в качестве нового пользователя.) AnonymousIdentificationModule.ClearAnonymousIdentifier не работает в этом сценарии, потому что вы можете вызвать это только в том случае, если пользователь аутентифицирован. (Похоже, что необязательный параметр для этой функции был бы неплохим.) В качестве альтернативы вы должны переписать анонимный файл cookie, указав дату истечения срока действия в прошлом. Я сделал это, создав базовый метод действий, к которому анонимный пользователь может перейти в любое время и перезапустить его как новый анонимный пользователь:
[HttpGet]
[AllowAnonymous]
public ActionResult ClearMyCookie()
{
HttpCookie cookie = new HttpCookie(".ASPXANONYMOUS");
cookie.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Add(cookie);
// Make sure to also do Session.Clear() if you're using session.
return RedirectToAction("index", "home");
}
Измените ".ASPXANONYMOUS" на имя вашего файла cookie. Я использую анонимное имя по умолчанию, указанное выше.
Я не уверен, что вы спрашиваете об этом, но вы можете удалить все файлы cookie, отправленные в браузер, следующим образом:
Response.Cookies.Clear();
Если у вас возникли проблемы с аутентификацией, возможно, вы захотите уточнить вопрос.