2010-06-25 24 views
5

Estoy usando .NET mvc2 para mi aplicación. Quiero alguna autorización personalizada sobre mis acciones. He buscado en Google un poco y parece que hay dos opciones disponibles.Autorizar filtros vs filtros de acción

  • Implementar la lógica en OnActionExecuting en Acción de filtrado personalizado, see this post
  • AuthorizeAttribute Subclase o implementar la interfaz Iauthorization y poner mi lógica no

Mi pregunta aquí es que la técnica que es preferible con pros y los contras de usando cada técnica

editado: Además, puedo anular onActionExecuting y onAuthorization en mi controlador base que me da el beneficio de acceder directamente a las variables del controlador y

+0

¿Encontró algún pro y contra? Ahora estoy lidiando con la misma pregunta. ¿Cuál fue su solución? –

+0

usando onActionExecuting le da el beneficio de tener acceso a miembros privados también. mientras que en los filtros, probablemente solo tengas acceso a propiedades y métodos públicos. utilicé la subclase de AuthorizeAttribute porque esto es para lo que sirve y te da una separación clara de las preocupaciones –

Respuesta

3

Si bien ambas opciones están bien, lo mejor es subclase AuthorizeAttribute por estas razones:

  1. separación de intereses.
  2. MVC proporciona el AuthorizeAttribute para este propósito (no pelee con el framework).
  3. El filtro de autorización se ejecuta primero, antes que otros filtros (según Pro ASP.NET MVC3 Framework, página 431). Esto asegura que no se ejecutará ningún código innecesario si un usuario no autorizado golpea su controlador/acción.