На моем сайте ASP. Net Core 2.2 есть пользователи-менеджеры, которые имеют возможность изменять несколько ключевых битов данных об обычных пользователях, включая роли этого пользователя. Эти биты данных хранятся в заявках другого пользователя. Я искал способ сделать недействительным пользовательский cook ie при изменении значений, чтобы при следующем доступе к сайту он обновил претензии.
Все мои исследования показывают, что это подходящее место для сделайте это:
services.Configure<SecurityStampValidatorOptions>(options =>
{
options.ValidationInterval = TimeSpan.FromMinutes(1);
options.OnRefreshingPrincipal = context =>
{
return Task.FromResult(0);
};
});
Моя проблема в том, что некоторые претензии основаны на значениях базы данных, и я не вижу очевидного способа добраться до базы данных из этого кода. Следует ли мне вручную использовать контейнер DI для создания экземпляров моих репозиториев, или это плохая идея? для меня OnRefreshingPrincipal - действительно подходящее место для обработки истекающих cookie-файлов. Пользовательские события аутентификации cook ie не знают об истечении срока действия штампа безопасности, поэтому это также означает, что я должен проверять базу данных с каждым запросом, что, конечно, ужасная идея.