Как удалить мой файл cookie аутентификации fedauth с помощью C#?
У меня есть пользовательский вход в Sharepoint 2010 с использованием аутентификации на основе утверждений. Аутентификация пользователя работает просто отлично, но мой пользовательский метод выхода - нет. Я пробовал несколько решений, но мой файл cookie аутентификации (федерация) все еще там. Зачем?
Это не будет работать:
FormsAuthentication.SignOut();
Не это:
FederatedAuthentication.SessionAuthenticationModule.SignOut();
FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();
И не будет этого:
var authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
HttpCookie cookie = new HttpCookie(authCookie.Name);
cookie.Expires = DateTime.Now.AddDays(-1d);
cookie.Domain = domain;
Response.Cookies.Add(cookie);
}
Как удалить мой файл cookie FedAuth? Мой файл cookie не является постоянным. Тем не менее, единственный способ удалить мой файл cookie аутентификации - это удалить его вручную в моем браузере или закрыть.
2 ответа
У нас были некоторые проблемы с этим при использовании WIF. Я не знаю, использует ли ваша реализация SharePoint WIF, но если это так, это альтернативный метод, который может помочь:
WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule;
string signoutUrl = (WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(authModule.Issuer, authModule.Realm, null));
Response.Redirect(signoutUrl);
Я знаю, что это 10-летняя ветка, но недавно я также наткнулся на точно такую же проблему с SharePoint Server 2013 и ASP.NET Framework 4.5.
Фактическое действие, которое решает мою проблему, почти такое же, как и ваш последний фрагмент кода.
var authCookie = Request.Cookies[myCookieName];
if (authCookie != null)
{
HttpCookie cookie = new HttpCookie(authCookie.Name);
cookie.Expires = DateTime.Now.AddDays(-1d);
cookie.Domain = domain;
Response.Cookies.Add(cookie);
}
единственное отличие в том, что я вручную определяю имя файла cookie, из которого я получил списокRequest.Cookies.AllKeys
затем выберите, какой файл cookie может содержать аутентификацию по его имени.
Нет, я не кодировал его или что-то в этом роде, чтобы он мог выбирать автоматически, я распечатал этоAllKeys
наружу, чтобыDebug.Console()
затем вручную выберите имя файла cookie, а затем назначьте его имяmyCookieName
. В моем случае файл cookie, отвечающий за аутентификацию,FedAuth
.