У меня есть базовый контроллер api, который я наследую от ApiController с. В ней я переопределяю ExecuteAsync и хочу использовать некоторые данные, хранящиеся в Principal.Claims var. но он пустой перед вызовом base.ExecuteAsync() и слишком поздно после его вызова. Я не вижу ничего другого, чтобы помочь этому?ApiController переопределяет для доступа User.Claims
public class ApiControllerBase : ApiController
{
public MyUser CurrentUser { get; set; }
public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
{
// principal.claims is empty
ClaimsPrincipal principal = (ClaimsPrincipal)RequestContext.Principal; // principal.claims is empty
var rv = base.ExecuteAsync(controllerContext, cancellationToken);
// principal.claims is now populated but the controller.action that inherits from this basecontroller has already fired and thrown an exception since CurrentUser is null.
principal = (ClaimsPrincipal)RequestContext.Principal;
}
}
Вы уверены, что вам нужно переопределить этот метод? Какое поведение вы хотите достичь? – MaKCbIMKo
Я не мог найти другой метод, который можно было бы переопределить. Конечная цель состоит в том, чтобы иметь некоторые свойства на моем базовом ApiController, чтобы наследующие контроллеры могли их использовать. Информация, которую мне нужно загрузить эти свойства, находится в коллекции Principal.Claims. – user3953989