Tengo un atributo CustomAuthorize
que comprueba si un usuario tiene acceso a la funcionalidad (un usuario o rol pueden estar asociados con elementos de un conjunto jerárquico de funciones).encargo Comprobación de parámetros atribuir al diseño/construcción
Para un método de acción determinada ...
[CustomAuthorize("Security.Admin.ManageWidgets.Update")]
Esto funciona, pero me preocupa que los cambios en el objeto de Seguridad podrían causar problemas que no se detecta hasta que el tiempo de ejecución. Me doy cuenta de que puedo escribir pruebas unitarias para mitigar este riesgo, pero me gustaría saber si es posible verificar el parámetro del atributo en tiempo de compilación. También me gusta tener Intellisense ayúdame a escribir esta expresión.
Idealmente, podría pasar una expresión lambda.
[CustomAuthorize(i => i.Admin.ManageWidgets.Update)]
Desafortunadamente esto is not currently possible (additional info from Microsoft).
También probé encapsular la expresión esperanza de que será evaluado y luego se pasa al atributo como una cadena, pero esto tampoco logró compilar con el mismo error (La expresión no puede contener métodos anónimos o expresiones lambda).
[CustomAuthorize(LambdaToString(i => i.Admin.ManageWidgets.Update))]
¿Cómo puedo añadir un poco de tiempo de diseño/construcción-tiempo de soporte para mi atributo personalizado parámetros?
1 para un problema interesante. – Mrchief