Я использую MVC5 с идентификатором Owin.
Я пытаюсь повторно использовать любые пользовательские претензии в регенерацииIdentityCallback.
У меня есть в Startup эту конфигурацию (как указано в стандартном шаблоне для нового проекта 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;
}
Проблема заключается в том, что я не могу повторно использовать Заявку, и мне всегда нужно получить новое значение для нее. После изучения DLL Identity я вижу, что экземпляр this
у пользователя не имеет претензий, поскольку он является новым пользователем из базы данных, а userIdentity
имеет только стандартные претензии как идентификатор и имя пользователя, которые создаются методом CreateIdentityAsync. Получение пользователя из HttpContext.Current невозможно, оно равно null на этом месте.
Каков наилучший способ повторного использования Претензии для сохранения некоторых значений из Cookie? Я, вероятно, неправильно понял цель претензий. спасибо заранее за вашу помощь