2016-07-05 31 views
0

Ist es bei Verwendung des Attribut-Routings möglich, Routen auf der Grundlage bestimmter Laufzeitbedingungen zu entfernen - z. B. Lizenzierung?Bedingtes Attribut-Routing

Etwas wie folgt aus:

[LicensedRoute("/api/whatever")] 

wo '/ api/was auch immer' nur auf der Route-Tabelle hinzugefügt wird, wenn die Anwendung zugelassen ist.

Offensichtlich kann ich die Überprüfung explizit in der Aktionsmethode durchführen oder einen Aktionsfilter verwenden, um die Anfragen zu validieren, aber letztendlich bevorzuge ich die Route nicht verfügbar zu sein, wenn die Software nicht lizenziert ist.

+1

Wahrscheinlich ist das benutzerdefinierte Autorisierungsattribut in diesem Fall relevanter. – Albert

Antwort

1

scheint, Sie müssen Routing Attribut: http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

Ist es RESTful? Wie speichern Sie die Lizenzinformationen: Sind das Benutzeranmeldungen? Token? Schlüssel?

Sie könnten RESTful machen und den Client zwingen, jedes Mal ein Token über tokenbasierte Authentifizierung zu übergeben, zum Beispiel: definieren Sie mehrere "Lizenz" Levels/Typen (zB Free/Trial/Basic/Pro) und dann in ein persistenter Speicher (Tabelle) Map-Token (GUIDs) zu einem Lizenztyp.

Markieren Sie dann mit einem benutzerdefinierten Attribut jeden Endpunkt/Controller/Aktion mit dem mindestens erforderlichen Lizenztyp, auf den zugegriffen werden kann (z. B. [MinimumLicence("Basic")]). Und dann erstellen Sie "Routing-Tabellen" basierend auf der erforderlichen Lizenz.

In diesem Fall würden Sie den Zugriff auf Routen verweigern, statt sie zu "entfernen".

+0

Also die kurze Antwort ist Nein. – Metro