У меня есть обработчик выхода из системы, который работал нормально:
public void ProcessRequest(HttpContext context)
{
//// Sign out
System.Web.Security.FormsAuthentication.SignOut();
//// Clear Session
if (context.Session != null)
{
context.Session.Clear();
}
/// Expire all the cookies so browser visits us as a brand new user
List<string> cookiesToClear = new List<string>();
foreach (string cookieName in context.Request.Cookies)
{
HttpCookie cookie = context.Request.Cookies[cookieName];
cookiesToClear.Add(cookie.Name);
}
foreach (string name in cookiesToClear)
{
HttpCookie cookie = new HttpCookie(name, string.Empty);
cookie.Expires = DateTime.Today.AddYears(-1);
context.Response.Cookies.Set(cookie);
}
context.Response.Redirect("~/default.aspx");
}
}
Как только я добавил параметр "домен" в раздел аутентификации web.config:
<forms timeout="50000000"
loginUrl="~/login"
domain='mysite.com'/>
... он больше не выходит из системы - после его перенаправления в "~ / default.aspx" я все еще вижу, как пользователь вошел в систему (я ставлю точку останова на событие Load этой страницы и проверяю HttpContext.Current .User.Identity.IsAuthenticated, и все еще = true).
Затем я удаляю "domain = 'mysite.com'", и он без проблем выходит из системы.
Мне нужно указать домен, потому что я добавил поддомен с собственным приложением, но я хочу, чтобы он разделял файл cookie аутентификации.
Любые идеи высоко ценятся!