2010-06-25 5 views
5

i .NET MVC2 für meine Anwendung unter Verwendung von m. Ich möchte eine benutzerdefinierte Autorisierung für meine Aktionen. Ich habe ein wenig gegoogelt und es scheint zwei Möglichkeiten zu geben.Autorisieren Filter vs Aktion Filter

  • Implementieren Logik in OnActionExecuting in Filter benutzerdefinierte Aktion, see this post
  • Subclass AuthorizeAttribute oder implementieren Iauthorization Schnittstelle und legte meine Logik dort

Meine Frage hier ist, dass die Technik mit Profis zu bevorzugen ist und Nachteile der unter Verwendung jeder Technik

bearbeitet: Außerdem kann ich OnActionExecuting und OnAuthorization in meiner Basis-Controller überschreiben, die mich Nutzen für den Zugriff auf Steuerungsvariablen directl gibt y.

+0

Haben Sie irgendwelche Vor- und Nachteile finden? Ich befasse mich gerade mit der gleichen Frage. Was war Ihre Lösung? –

+0

Mit onActionExecuting können Sie auch auf private Mitglieder zugreifen. In Filtern haben Sie wahrscheinlich nur Zugriff auf öffentliche Eigenschaften und Methoden. Ich habe die Subclass von AuthorizeAttribute verwendet, weil dies genau das ist, worum es geht, und Ihnen eine saubere Trennung von Bedenken gibt –

Antwort

3

Während beide Optionen in Ordnung sind, ist es am besten AuthorizeAttribute aus diesen Gründen zu Unterklasse:

  1. Trennung von Bedenken.
  2. MVC bietet die AuthorizeAttribute für diesen Zweck (haben den Rahmen nicht kämpfen).
  3. Der Berechtigungs Filter läuft zuerst - bevor andere Filter (pro Pro ASP.NET MVC3 Framework Seite 431). Dies stellt sicher, dass kein unnötiger Code ausgeführt wird, wenn ein nicht autorisierter Benutzer Ihren Controller/Ihre Aktion trifft.