Создать непостоянный файл cookie с помощью FormsAuthenticationTicket

StackOverflow https://stackoverflow.com/questions/1819351

Вопрос

У меня проблемы с созданием непостоянного cookie-файла с использованием FormsAuthenticationTicket. Я хочу сохранить пользовательские данные в заявке, поэтому я не могу использовать методы FormsAuthentication.SetAuthCookie () или FormsAuthentication.GetAuthCookie (). Из-за этого мне нужно создать FormsAuthenticationTicket и сохранить его в HttpCookie.

Мой код выглядит следующим образом:

DateTime expiration = DateTime.Now.AddDays(7);

// Create ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2,
    user.Email,
    DateTime.Now,
    expiration,
    isPersistent,
    userData,
    FormsAuthentication.FormsCookiePath);

// Create cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
cookie.Path = FormsAuthentication.FormsCookiePath;
if (isPersistent)
    cookie.Expires = expiration;

// Add cookie to response
HttpContext.Current.Response.Cookies.Add(cookie);

Когда переменная isPersistent имеет значение true, все работает нормально, и cookie сохраняется. Но когда isPersistent имеет значение false, cookie все равно сохраняется. Я вхожу в окно браузера, закрываю его и снова открываю браузер, и я все еще вошел в систему. Как мне установить cookie, чтобы они не были постоянными?

Является ли непостоянный файл cookie тем же файлом cookie сеанса? Сохраняется ли информация о файлах cookie в данных сеанса на сервере или файлы cookie передаются в каждом запросе / ответе на сервер?

Это было полезно?

Решение

Попробуйте удалить.

if (isPersistent)     {cookie.Expires = срок действия; }

... и заменить его на:

if (! isPersistent) {     cookie.Expires = DateTime.Now.AddYears (-1); }

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top