/ / Дивна поведінка в домені cookie - asp.net, файли cookie, автентифікація форм

Дивна поведінка на домені cookie - asp.net, куки, аутентифікація форм

Довідкова інформація:

  • Веб-додаток AspNet / C # 3.5
  • IIS7
  • VS 2010
  • Windows 7

Після автентифікації користувача ми створюємо файл cookie таким чином:

var cookieASP = FormsAuthentication.GetAuthCookie(user.Id, true);
cookieASP.Domain = "x.y.local";

так, domain важко закодований для цього прикладу.

Використовуючи розширення для перегляду файлів cookie у Firefox 11, я можу це бачити domain печива: .x.y.local, з ведучим .. Я знаю, що це дозволяє спільне використання файлів cookie між w.x.y.local і q.x.y.local. Добре.

Але, коли користувач натискає на відключення, його не виганяють ...

 var cookieAsp = System.Web.Security.FormsAuthentication.GetAuthCookie(u.Identifiant, true);
cookieAsp.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Set(cookieAsp);
FormsAuthentication.SignOut();

І з налагоджувачем ми можемо це побачити cookieAsp.Domain є нульовим. І файли cookie не видаляються з файлів cookie браузера.

Якщо я редагую домен файлу cookie (безпосередньо з браузера) і встановлю його на x.y.local без провідні ., cookie видалено, а користувач відключений.

Я не розумію, чому це . додається, і чому браузер недостатньо розуміє.

EDIT (головне значення я думаю): ми робимо так, тому що якщо ми цього не ставимо domain, то IE8 (лише 8) не може зрозуміти наше cookie ...

Відповіді:

1 для відповіді № 1

Коли ви хочете видалити файл cookie, вам потрібно вказати файл cookie точно домен файлу cookie, який ви хочете видалити. Домен cookie не надсилається браузером на запит, тому ви завжди отримаєте нульове значення, коли спробуєте перевірити його протягом сеансу налагодження.

Так і раніше Response.Cookies.Set(cookieAsp); додати cookieASP.Domain = "x.y.local";.