Довідкова інформація:
- Веб-додаток 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";
.