Ich benutze die Asp.Net Web API. Ich möchte in der Lage sein, bestimmte Felder auf den Antwortobjekten basierend auf den Zugriffsrechten der verbundenen Clients herauszufiltern.
Beispiel:
%Vor% Beim Zurückgeben von Daten sollte das Feld Wibble
nur zurückgegeben werden, wenn der aktuelle Benutzerkontext den Wert von "Uberlord" erfüllen kann.
Es gibt drei Wege, die ich erkunde, aber ich habe keine funktionierende Lösung:
Mein Problem mit diesen sind:
Ein zusätzlicher Bonus wäre das Entfernen von Werten aus den Feldern eines eingehenden Anforderungsobjekts mit demselben Mechanismus.
Habe ich einen offensichtlichen Haken übersehen? Wurde das auf andere Weise gelöst?
Es war tatsächlich viel einfacher als ich zuerst dachte. Was ich nicht bemerkt habe ist, dass die DelegatingHandler
verwendet werden kann um die Antwort sowie die Anfrage in der Web-API-Pipeline zu manipulieren .
Delegierender Handler
Delegierende Handler sind ein Erweiterungspunkt in der Nachrichtenpipeline, mit dem Sie die Anforderung massieren können, bevor Sie sie an den Rest der Pipeline weitergeben. Die Antwortnachricht muss auf ihrem Rückweg auch den delegierenden Handler durchlaufen, sodass jede Antwort an diesem Erweiterungspunkt überwacht / gefiltert / aktualisiert werden kann.
Delegieren von Handlern, falls erforderlich, kann den Rest der Pipeline auch umgehen und zurück senden und HTTP-Antwort selbst.
Hier ist eine Beispielimplementierung eines DelegatingHandlers, der das Antwortobjekt entweder manipulieren oder ganz ersetzen kann.
%Vor%Ich habe eine ähnliche Frage in den Arbeiten hier: ASP.NET WebAPI bedingte Serialisierung basierend auf Benutzerrolle
Eine vorgeschlagene Lösung, die ich entwickelt habe, besteht darin, meinen ApiController von einem BaseApiController zu erben, der die Initialisierungsfunktion außer Kraft setzt, um den entsprechenden Formatierer auf der Grundlage der Benutzerrolle festzulegen. Ich habe nicht entschieden, ob ich diesen Weg noch gehen werde, aber vielleicht wird es für dich funktionieren.
%Vor%Tags und Links asp.net-web-api rest serialization data-security