Очистить анонимную идентификацию?

Есть ли API для очистки анонимных файлов cookie?

4 ответа

Решение

Да!

 System.Web.Security.AnonymousIdentificationModule.ClearAnonymousIdentifier()

Смотрите эту полезную статью: (Перенос настроек анонимного пользователя)

Также Лучший способ перенести вопрос анонимного профиля stackru.

Я использую MVC4, и в моем сценарии я хочу иметь возможность удалить анонимный куки-файл, чтобы новый автоматически генерировался, даже если пользователь никогда не входит в систему. (Чтобы тестерам не приходилось каждый раз удалять свои куки-файлы). время, когда они хотят вернуться на сайт в качестве нового пользователя.) 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" на имя вашего куки. Я использую анонимное имя по умолчанию выше.

Первоначально я столкнулся с проблемой "AnonymousIdentificationModule.ClearAnonymousIdentifier()". Ошибка была "ClearAnonymousIdentifier не поддерживается, когда функция отключена или пользователь является анонимным".

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

Для этого поместите код в случае, когда пользователь аутентифицирован (вошел в систему), например:

if(Request.IsAuthenticated)
{
   AnonymousIdentificationModule.ClearAnonymousIdentifier();
}

Это сделает свое дело.

Я не уверен, что это то, о чем вы просите, но вы можете удалить все куки, отправленные в браузер, следующим образом:

Response.Cookies.Clear();

Если у вас есть проблемы с аутентификацией, вы можете уточнить вопрос.

Другие вопросы по тегам