Необходим доступ к зарегистрированному пользователю из уровня хранилища. - PullRequest
0 голосов
/ 28 января 2019

Как передать объект текущего пользователя заявки на уровень хранилища, в то время как я использую запрет зависимостей в .net core может приложение (N-уровень, использующий .Net core ), архитектура может быть

  1. UI
  2. API
  3. Модель
  4. Репозиторий
  5. Общий
  6. База данных

    ВПриведенный выше API имеет зависимость проекта от Model, Repository и Common.

Моя проблема заключается в том, что пользователю претензий (с использованием промежуточного программного обеспечения JWT) необходимо внедрить в слой репозитория так, чтобы made_by и updated_by не могли быть параметром изКод уровня API

1 Ответ

0 голосов
/ 28 января 2019

Вы можете получить loggedInUserId в вашем Repository Layer, используя IHttpContextAccessor следующим образом:

public class Repository
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    public Repository(IHttpContextAccessor httpContextAccessor)
    {
       _httpContextAccessor = httpContextAccessor;
    }

   public void YourRepositoryMethod()
   {
      var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
      // or
      var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
   }
}

Затем вам нужно зарегистрировать IHttpContextAccessor в классе Startup следующим образом:

public void ConfigureServices(IServiceCollection services)
{
    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

    // Or you can also register as follows

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