Изменение значения файла Cookie в HttpHandler
у меня есть файл cookie, который я использую для сохранения идентификатора пользователя, но мне трудно заменить его новым значением. Согласно MSDN, я должен быть в состоянии просто перезаписать значение, но оно не работает. Я делаю логику входа в обработчик и передаю пользователя на новую веб-страницу, если они преуспеют.
public void ProcessRequest(HttpContext context)
{
User user = User.FindByUsernameAndPassword(
context.Request.Form["username"],
context.Request.Form["password"]);
context.Response.Cookies["user_id"].Value = user.ID.ToString();
context.Response.Redirect("/profile", true);
}
при первом входе в систему он работает хорошо, но если я попытаюсь перезаписать текущий файл cookie, нажав на обработчик с новым идентификатором пользователя, он не изменит значение cookie, и я продолжаю входить в систему как пользователь, которым я был, когда я ударил его.
другие страницы используют cookie для входа в систему, но поскольку идентификатор пользователя не изменяется, он не изменяет зарегистрированного пользователя.
public User User { get; set; }
public override void Page_Load()
{
this.User = User.Find(int.Parse(Request.Cookies["user_id"].Value));
}
2 ответов
по словам сайт MSDN, вы должны написать новый файл cookie с тем же именем, а не просто изменить его:
изменение и удаление Cookies
вы не можете напрямую изменить файл cookie. Вместо этого изменение cookie состоит из создание нового файла cookie с новыми значениями а затем отправить печенье в браузер для перезаписи старой версии на клиенте. Следующий код пример показывает, как можно изменить значение файл cookie, в котором хранится счетчик о посещениях пользователем сайта:
int counter;
if (Request.Cookies["counter"] == null)
counter = 0;
else
{
counter = int.Parse(Request.Cookies["counter"].Value);
}
counter++;
Response.Cookies["counter"].Value = counter.ToString();
Response.Cookies["counter"].Expires = DateTime.Now.AddDays(1);
Я согласен с первым постом о добавлении .Значение свойства, а затем, возможно, добавить .И посмотрим, что получится.