ASP.NET Cookies дублируются для поддоменов
У меня есть два сайта asp.net. один из них подобен domain.com, а второй - sub.domain.com. Домен.com устанавливает файлы cookie aspxauth при входе в систему и удаляет их (по истечении срока действия в прошлом) при выходе из системы. Домен cookie - ".domain.com", поэтому он доступен с обеих сторон. sub.domain.com пассивно относится к cookie-файлам и просто пытается прочитать cookie-файлы и аутентифицировать пользователя, если cookie-файл был найден.
Эта проблема. Через некоторое время браузер получает вторые файлы cookie ASPXAuth с доменом "domain.com" (без "."), Поэтому выход из системы не работает, поскольку удаляется только первый (".domain.com") файл cookie.
Конфиг есть
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" domain=".domain.com"/>
</authentication>
Установить печенье
public static void SetAuthCookie(IUserPrincipal principal, DateTime expiration)
{
var ticket = new FormsAuthenticationTicket(1, principal.Identity.Name, DateTime.Now, expiration, false,
principal.SessionId, FormsAuthentication.FormsCookiePath);
var encTicket = FormsAuthentication.Encrypt(ticket);
var response = HttpContext.Current.Response;
if (response.Cookies[FormsAuthentication.FormsCookieName] != null)
{
response.Cookies.Remove(FormsAuthentication.FormsCookieName);
}
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
{
Expires = expiration,
Secure = FormsAuthentication.RequireSSL,
};
response.Cookies.Set(cookie);
}
Удалить куки
public static void SignOut()
{
SetContextPrincipal(null);
FormsAuthentication.SignOut();
}