Reivindicação de reutilização em regenerateIdentityCallback na identidade Owin no MVC5
Estou usando o MVC5 com identidade Owin.
Estou lutando para reutilizar quaisquer declarações personalizadas em regenerateIdentityCallback.
Eu tenho na inicialização essa configuração (conforme fornecido no modelo padrão para o novo projeto 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()))
}
});
o GenerateUserIdentityAsync tem a seguinte aparência: (também bastante padrão no modelo)
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;
}
O problema é que não consigo reutilizar a Reivindicação e sempre preciso obter um novo valor para ela. Após investigação da Identity dll, vejo quethis
A instância do usuário não possui Reivindicações, pois é um novo usuário do Banco de Dados euserIdentity
possui apenas as declarações padrão como Id e UserName, criadas pelo método CreateIdentityAsync. Não é possível obter o usuário do HttpContext.Current, é nulo neste local.
Qual é a melhor maneira de reutilizar uma reivindicação para manter alguns valores do cookie? Provavelmente eu não entendi o propósito das Reivindicações. Thx antecipadamente por sua ajuda