Доступ к репозиторию Entity Framework из OnRefreshingPrincipal SecurityStampValidator - PullRequest
0 голосов
/ 10 июля 2020

На моем сайте 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 не знают об истечении срока действия штампа безопасности, поэтому это также означает, что я должен проверять базу данных с каждым запросом, что, конечно, ужасная идея.

...