Я пытаюсь настроить ClaimsIdentity
.
Причина в том, что я не хочу использовать куки-файлы для хранения всех претензий, потому что в контексте моего приложения у меня есть много (сотни) Projects
, к которым пользователь может иметь доступ и может легко создать воздушный шарик cookie свыше 4к (что я считаю пределом)
Вот мой пользовательский класс
public class CustomIdentity : ClaimsIdentity
{
public List<string> Projects { get; set; } = new List<string>();
public CustomIdentity(List<Claim> claims, string authScheme)
: base(claims, authScheme)
{
Projects.Add("test data");
}
}
И как создается личность, когда пользователь входит в систему:
var claims = new List<Claim>
{
new Claim("Id", userId),
new Claim(ClaimTypes.Email, email)
};
var claimsIdentity = new CustomIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var authProperties = new AuthenticationProperties
{
ExpiresUtc = DateTime.Now.AddHours(1),
IsPersistent = true,
IssuedUtc = DateTime.Now
};
await httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties);
Проблема в том, что всякий раз, когда я извлекаю ClaimsPrincipal
(из HttpContext
или ControllerBase
), это не тот идентификатор, который я создал при входе в систему, а обычный ClaimsIdentity
.
Есть ли способ, которым я могу это изменить?