Контекстная сериализация от конечной точки 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 потребует много размышлений.Дополнительным бонусом будет удаление значений из полей объекта входящего запроса с использованием того же механизма.
Я пропустил очевидный крюк? Это было решено другим способом?