Как получить информацию о пользователе в DbContext с помощью Net CoreC#

Место общения программистов C#
Ответить
Anonymous
 Как получить информацию о пользователе в DbContext с помощью Net Core

Сообщение Anonymous »

Я пытаюсь разработать библиотеку классов, в которой хочу реализовать собственный DbContext. В методе SaveChanges DbContext мне нужно получить информацию о текущем пользователе (отдел, имя пользователя и т. д.) для целей аудита. Некоторая часть кода DbContext приведена ниже:

Код: Выделить всё

public override int SaveChanges()
{
// find all changed entities which is ICreateAuditedEntity
var addedAuditedEntities = ChangeTracker.Entries()
.Where(p => p.State == EntityState.Added)
.Select(p => p.Entity);

var now = DateTime.Now;

foreach (var added in addedAuditedEntities)
{
added.CreatedAt = now;
added.CreatedBy = ?;
added.CreatedByDepartment = ?
}
return base.SaveChanges();
}
На ум приходят два варианта:
  • Использование HttpContext.Items чтобы сохранить информацию о пользователе, внедрив IHttpContextAccessor и получив информацию из

    Код: Выделить всё

    HttpContext.Items
    (В данном случае DbContext зависит от HttpContext, это
    правильно?)
  • Использование объекта ThreadStatic вместо HttpContext.Items code> и получение информации от объекта(читал некоторые сообщения
    о том, что ThreadStatic небезопасен)
Вопрос : Какой лучше всего подходит для моего случая? Есть ли другой способ, который вы предлагаете?

Подробнее здесь: https://stackoverflow.com/questions/364 ... g-net-core
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»