Продлевать ClaimsIdentity? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь настроить 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.

Есть ли способ, которым я могу это изменить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...