Перенос принципала из ASP.NET Web API 2 в ядро ​​ASP.NET (AuthenticationFilter) - PullRequest
0 голосов
/ 26 октября 2019

Я думаю о том, как перенести проект ASP.NET Web API 2 в ASP.NET Core.

Сведения о текущем проекте:

  1. Все контроллеры API наследуются BaseController .
  2. BaseController украшен настраиваемым атрибутом ( CustomAuthenticationAttribute )
  3. CustomAuthenticationAttribute реализует IAuthenticationFilter и внутри AuthenticateAsync метод:

    • На основе заголовков HTTP я получаю сведения о пользователе из базы данных
    • В случае, если пользователь не найден, я заполняю HttpAuthenticationContext.ErrorResult и возвращаю (обрезая конвейер)
    • Если я нахожу пользователя, выполняется оператор, подобный этому: HttpAuthenticationContext.Principal = new GenericPrincipal (идентификатор, новая строка [] {}) для установки принципала.
  4. BaseController содержитследующий код:

    protected MyIdentityClass Identity
    {
      get
      {
        if (RequestContext.Principal == null)
        {
          return null;
        }
        return RequestContext.Principal.Identity as MyIdentityClass ;
      }
    }
    
  5. Я могу получить доступ к Идентификации внутри любого метода API.

  6. Внутримодульные тесты, я могу назначить принципала с помощью следующего кода:

    Thread.CurrentPrincipal = new GenericPrincipal(identity, new string[] { });

У меня такой вопрос: Как я могу перенести этот код на ASP.NET Coreбез изменения всех моих контроллеров API и тестовых классов? Я уже прочитал Миграция с ClaimsPrincipal.Current , но она не удовлетворяет моим потребностям.

...