2010-06-25 18 views
5

J'utilise .NET mvc2 pour mon application. Je veux une autorisation personnalisée sur mes actions. J'ai un peu googlé et il semble y avoir deux options disponibles.Autoriser les filtres vs les filtres d'action

  • Mettre en œuvre la logique dans OnActionExecuting dans le filtre d'action personnalisé, see this post
  • AuthorizeAttribute Sous-classe ou mettre en œuvre l'interface Iauthorization et y mettre ma logique

Ma question ici est que la technique est préférable avec les avantages et les inconvénients de en utilisant chaque technique

édité: En outre, je peux remplacer onActionExecuting et onAuthorization dans mon contrôleur de base qui me donne l'avantage d'accéder aux variables de contrôleur directl y.

+0

Avez-vous trouvé des avantages et des inconvénients? En ce moment, j'ai la même question. Quelle était votre solution? –

+0

L'utilisation de onActionExecuting vous permet également d'accéder à des membres privés. tandis que dans les filtres, vous avez probablement accès uniquement aux propriétés et méthodes publiques. J'ai utilisé la sous-classe de AuthorizeAttribute parce que c'est ce à quoi il sert et donne une séparation nette des préoccupations –

Répondre

3

Bien que les deux options sont OK, il est préférable de sous-classe AuthorizeAttribute pour ces raisons:

  1. La séparation des préoccupations.
  2. MVC fournit le AuthorizeAttribute à cet effet (ne pas combattre le cadre).
  3. Le filtre d'autorisation est exécuté en premier - avant les autres filtres (selon le framework Pro ASP.NET MVC3, page 431). Cela garantit qu'aucun code inutile ne s'exécutera si un utilisateur non autorisé frappe votre contrôleur/action.