La mayoría de las aplicaciones web realizan comprobaciones de autorización en la capa del controlador. Esto es básicamente correcto, pero las aplicaciones complejas tienden a tener controles repetitivos. Por ejemplo, puede haber una decena de acciones de controlador que operan en una Orden, y cada acción debe verificar que el Usuario actual esté autorizado para acceder a esa Orden.
Algunas aplicaciones se ocupan de esto al tener funciones de ayuda en Orden, por ejemplo, Order.isUserAuthz () y esto reduce la hinchazón del código. Sin embargo, todavía existe el riesgo de que un método de controlador particular se olvide de llamar a esa función. Desde mi experiencia con las pruebas de lápiz, esto es bastante común en aplicaciones complejas.
En cambio, ¿qué tal si la capa del modelo realiza la verificación de autorización? Por lo tanto, cuando cargue un pedido, solo se cargará si el usuario actual está autorizado. Debido a que esto se realiza mediante la capa del modelo, no hay riesgo de que la capa del controlador olvide realizar una llamada. En última instancia, lo que está haciendo es reducir la cantidad de código crítico para la seguridad, lo que reduce el riesgo de que un error de codificación cause una vulnerabilidad.
Esto me parece una buena idea, pero no es una práctica común. ¿Tiene alguna idea sobre los riesgos que podría plantear, o dificultades de implementación?