Pregunta

Me gustaría ser capaz de obtener alguna manera inflexible de tipos de saber qué acción se está ejecutando.

Para aclarar que estoy haciendo AOP donde sólo permitir el acceso a una determinada acción si el usuario tiene derechos para esa acción.

El problema de usar una cadena para determinar qué regla para comprobar si hay, es que si algún desarrollador cambia el nombre de una acción, no voy a conseguir un error de compilación que me decía que mi regla se rompe.

¿Alguna idea ??

¿Fue útil?

Solución

Desarrollar un atributo que lleva a cabo su cheque. Aplicar el atributo, con todas las opciones necesarias, a las acciones que desea proteger. Escribir pruebas unitarias que comprueban que las acciones en cuestión existen y están decoradas con su atributo (con las opciones apropiadas). En su atributo que no es necesario saber qué acción se está ejecutando, solo si el usuario actual pasa las pruebas tal como está configurado por las opciones del atributo.

Tengo un par de diferentes atributos que he derivado de AuthorizeAttribute que hacen exactamente este tipo de cosas.

 public class RequiresEmailAttribute : AuthorizeAttribute
 {
      ... implements the logic to test whether the current user
      ... has an email address and redirects to error view if no
      ... email address is found
 }

 [RequiresEmail]
 public ActionResult SendEmail( string to )
 {
    ....
 }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top