Я пытаюсь склонить голову к цели собственности isPersistent
, найденной на классе FormsAuthenticationTicket
. http://msdn.microsoft.com/en-us/library/kybcs83h.aspxКакова цель свойства FormsAuthenticationTicket isPersistent?
- Существуют ли сценарии при настройке isPersistent works?
- В каких сценариях я хочу установить
isPersistent
в true и false?
Свойство кажется излишними, так как я нашел единственный способ для меня, чтобы упорствовать мои аутентификацию пользователей куков сеанса браузера, чтобы установить Expires
свойства куки, созданной после создания в билете; даже если в билетах установлено значение Parsistent значение false
.
Я также обнаружил, что установка истечения срока действия билетов (а не файла cookie) на что-то вроде 10 секунд с isPersistent
установлена в true, имеет небольшой эффект; билет истекает через 10 секунд.
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
identity.Name,
DateTime.Now,
DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
isPersistent,
JsonSerializerService.ToJson(identity),
FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.Path = FormsAuthentication.FormsCookiePath;
cookie.Expires = DateTime.Now.AddYears(1); // good for one year
Я понимаю, что я могу изменить мой выше код опционально expires
if (isPersistent)
cookie.Expires = DateTime.Now.AddYears(1); // good for one year
Пример приложение было создано @ GitHub. https://github.com/chrismoutray/AuthSample Это в основном показывает, что даже установив флаг isPersistent в true, разрешение на перекрестный браузер не работает.
Я чувствую, что я что-то упустил, cookie не сохранится, если я специально не установил поле cookie 'Expires'. Настройка IsPersistent не влияет. –
Если вы установите IsPersistent в true, сгенерированный cookie будет иметь дату истечения срока + время ожидания формы. Это не ваше дело? – lnu
Ну нет - если я удалю строку 'cookie.Expires = DateTime.Now.AddYears (1);' моя функция mem-login для входа не работает, хотя isPersistent установлен в true. –