Я думаю о том, как перенести проект ASP.NET Web API 2 в ASP.NET Core.
Сведения о текущем проекте:
- Все контроллеры API наследуются BaseController .
- BaseController украшен настраиваемым атрибутом ( CustomAuthenticationAttribute )
CustomAuthenticationAttribute реализует IAuthenticationFilter и внутри AuthenticateAsync метод:
- На основе заголовков HTTP я получаю сведения о пользователе из базы данных
- В случае, если пользователь не найден, я заполняю HttpAuthenticationContext.ErrorResult и возвращаю (обрезая конвейер)
- Если я нахожу пользователя, выполняется оператор, подобный этому: HttpAuthenticationContext.Principal = new GenericPrincipal (идентификатор, новая строка [] {}) для установки принципала.
BaseController содержитследующий код:
protected MyIdentityClass Identity
{
get
{
if (RequestContext.Principal == null)
{
return null;
}
return RequestContext.Principal.Identity as MyIdentityClass ;
}
}
Я могу получить доступ к Идентификации внутри любого метода API.
Внутримодульные тесты, я могу назначить принципала с помощью следующего кода:
Thread.CurrentPrincipal = new GenericPrincipal(identity, new string[] { });
У меня такой вопрос: Как я могу перенести этот код на ASP.NET Coreбез изменения всех моих контроллеров API и тестовых классов? Я уже прочитал Миграция с ClaimsPrincipal.Current , но она не удовлетворяет моим потребностям.