Мне нужно получить зарегистрированного в данный момент пользователя для ведения журнала аудита вне контроллера. Я использую Database First подход в. NET core 3.1 API проекте. Вот почему я создал новый класс контекста, который наследуется от класса MyContext для обработки аудита. Здесь я теперь хочу получить информацию о пользователе. Я использую аутентификацию на основе утверждений JWT.
В нижеуказанном классе " MyNewContext " я добавил IHttpContextAccessor в файл Startup.cs (services.AddHttpContextAccessor();
), чтобы использовать его в " MyNewContext"класс, однако объекты User или Claims являются emtpy при вызове конструктора.
Кажется, что я могу получить объект User только тогда, когда IHttpContextAccessor используется внутри контроллера. Также, если я создаю класс обслуживания для IHttpContextAccessor, он имеет объект пользователя только при вызове внутри контроллера.
public class MyNewContext : MyContext
{
private static string _userGuid;
private readonly IHttpContextAccessor _httpContextAccessor;
public MyNewContext(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
GetUserGuid();
}
public void GetUserGuid()
{
_userGuid = _httpContextAccessor.HttpContext?.User?.FindFirst("unique_name")?.Value;
}
}
Startup.cs
services.AddHttpContextAccessor();
services.AddDbContext<MyNewContext>(x => x.UseSqlServer(Configuration["ConnectionStrings:xyz"]));
Что я делаю неправильно? Есть ли другой способ получить информацию о пользователе?
Спасибо.