Использование asp.net identity version 1.0.0-rc1 с Entity Framework 6.0.0-rc1 (те, которые поставляются с Visual Studio 2013 RC).
Попытка дать пользователям возможность изменить их UserName
.
Кажется, нет функции для этого в AuthenticationIdentityManager
, поэтому я изменяю данные с помощью EF (получаю пользовательский объект для текущего пользователя, изменяю UserName и сохраняю изменения).
Проблема заключается в том, что файлы cookie для проверки подлинности остаются неизменными, а следующий запрос завершается с ошибкой, поскольку такого пользователя нет.
С проверкой подлинности форм в прошлом я использовал следующий код для решения этой проблемы.
var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent;
FormsAuthentication.SetAuthCookie(newUserName, isPersistent);
Что мне делать с идентификатором asp.net для обновления файлов cookie?
UPDATE
Следующий код, похоже, обновляет файл cookie аутентификации.
var identity = new ClaimsIdentity(User.Identity);
identity.RemoveClaim(identity.FindFirst(identity.NameClaimType));
identity.AddClaim(new Claim(identity.NameClaimType, newUserName));
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant
(new ClaimsPrincipal(identity), new AuthenticationProperties {IsPersistent = false});
Остальная проблема заключается в следующем: как извлечь IsPersistent
значение из текущего файла cookie проверки подлинности?