Ich bin mit Asp.Net Web API gestartet und hier ist mein Problem:Auf Asp.net Web API Autorisierungsfilter, wie kann ich auf Parameter zugreifen?
Ich implementiere einen benutzerdefinierten Autorisierungsfilter, um meine Nachrichtenkopfzeile auf der Suche nach einem API-Schlüssel zu überprüfen. Basierend auf diesem API-Schlüssel, lade ich meinen Benutzer ab und dann würde ich gerne sehen, ob er Zugriff auf einige Ressourcen haben kann. Die Ressourcen ID, die ich überprüfen möchte, ist auf den Parametern der HTTP-Anfrage. Aber wenn ich in der AuthorizationFilter-Methode bin, ist die Liste der Aktionsparameter leer.
Wie kann ich das tun?
Wenn ich einen ActionFilter als Ersatz für einen Autorisierungsfilter verwendet habe, wie kann ich sicher sein, dass dies der erste ausgeführte Filter ist? Und global, wie kann ich die Ausführungsreihenfolge von Filtern angeben?
Letzte Frage, ist es möglich, einige Daten "auf der Rohrleitung" hinzuzufügen, die ich auf jedem Filter abrufen konnte? So etwas wie ein Session-Store, aber auf die Anfrage beschränkt?
Vielen Dank für jede Antwort
Sie können Pfadinformationen auch von RouteData abrufen. Wenn Speicher mir dient, würde es etwas wie Request.GetRouteData(). Werte; –
@DarrelMiller, ich habe diese Idee verfolgt und mein Gurtzeug scheint nicht so zu funktionieren. var routeData = actionContext.Request.GetRouteData(); var Wert = routeData.Values ["MyValue"] als String; Meine routeData enthält nur den Controller-Wert. Lassen Sie mich wissen, wenn Sie nicht zustimmen und ich werde weiter untersuchen. –
Verwenden Sie zuerst einen Autorisierungsfilter, der einen Wert in Anforderungseigenschaften einstellt, und dann ein Aktionsfilter funktioniert. Andere Informationen waren auch nützlich. Danke für Ihre Hilfe. – Ben