Претензия повторного использования в регенерацииIdentityCallback в идентификации Оуэна в MVC5
Я использую MVC5 с идентификацией Оуэна.
Я изо всех сил пытаюсь повторно использовать любые пользовательские утверждения в регенерации удостоверения.
У меня при запуске эта конфигурация (как предусмотрено в стандартном шаблоне для нового проекта MVC)
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser, Guid>(
validateInterval: TimeSpan.FromSeconds(10),
regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager),
getUserIdCallback: (user) => Guid.Parse(user.GetUserId()))
}
});
GenerateUserIdentityAsync выглядит следующим образом: (а также в значительной степени стандартно из шаблона)
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, Guid> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// I want here instead of generating new one, just reuse the previous one
userIdentity.AddClaim(new Claim(ClaimTypes.Sid, Guid.NewGuid().ToString()));
return userIdentity;
}
Проблема в том, что я не могу повторно использовать Претензию, и мне всегда приходится получать новое значение для нее. После расследования идентичности я вижу, чтоthis
Экземпляр пользователя не имеет претензий, поскольку он является новым пользователем из базы данных иuserIdentity
имеет только стандартные утверждения как Id и UserName, которые создаются методом CreateIdentityAsync. Получить пользователя из HttpContext.Current невозможно, в этом месте он пуст.
Каков наилучший способ повторно использовать Заявку, чтобы сохранить некоторые значения из Cookie? Я, вероятно, неправильно понял цель Претензий. Спасибо заранее за вашу помощь