Контекстная сериализация от конечной точки WebApi на основе разрешений

Я использую Asp.Net Web Api. Я хотел бы иметь возможность отфильтровать определенные поля в объектах ответа на основе прав доступа подключенных клиентов.

Пример:

class Foo
{
    [AccessFilter("Uberlord")]
    string Wibble { get; set; }

    string Wobble { get; set; }
}

При возврате данных в полеWibble должен возвращаться, только если текущий контекст пользователя может удовлетворять значению "Uberlord».

Есть три пути, которые я изучаю, но у меня нет рабочего решения:

Пользовательский WebApi MediaTypeFormatter.Пользовательский json.net IContractResolver.Какая-то оболочка AOP для контроллеров, которая манипулирует объектом ответа

Моя проблема с этим:

Пользовательский форматировщик не кажется подходящим местом для этого, но может быть единственным вариантом.Пользовательский сериализатор json не будет иметь доступа к текущему контексту, поэтому мне придется разобраться с этим.При использовании первых двух опций вам потребуются конкретные реализации для каждого формата ответа: json, xml, некоторый пользовательский формат и т. Д. Это будет означать, что если поддерживается другой тип ответа, то для предотвращения утечки конфиденциальных данных требуется специальный форматтер / сериализатор.Оболочка контроллера AOP потребует много размышлений.

Дополнительным бонусом будет удаление значений из полей объекта входящего запроса с использованием того же механизма.

Я пропустил очевидный крюк? Это было решено другим способом?

Ответы на вопрос(2)

Ваш ответ на вопрос