Proxy: Patrón de Diseño para Seguridad

Entre los patrones de diseño que ya comenté en otro post, quiero agregar uno que dejé pasar, y al que he retomado hace poco, tanto de forma teórica, como para implementación en algunos desarrollos. Es el patrón de diseño Proxy.

Este patrón es usado para agregar una capa de seguridad sobre un sistema ya desarrollado y que es totalmente ajeno a este aspecto. Es decir, podemos desarrollar un sistema de control de almacén en el que solo tendremos en cuenta el stock en sí del almacén y, para agregar los usuarios, permisos y demás, entonces, agregamos el la capa proxy que se encarga de asegurar el acceso solo a los usuarios que deban de poder acceder.

Ahora que mi atención se está centrando en Ruby, voy viendo artículos como este (algo antiguo), donde explican como integrar esta capa junto con ruby on rails. En Java, este patrón de diseño está presente en entornos tales como spring.

En el patrón MVC, agregando esta ideología, además del uso de rutas, tenemos que el controlador se puede diseccionar en:

  • Controlador: controla el flujo normal de ejecución del sistema.
  • Rutas: facilita las peticiones desde el navegador.
  • Proxy: comprueba cada acceso a cada controlador, teniendo en cuenta parámetros como el usuario que accede, dirección IP y/o navegador, entre otros que se puedan tener en cuenta.

Esta separación facilita el desarrollo, ya que se basa en la encapsulación y abstracción del código por similitudes funcionales, así como, por supuesto, cumplir con el principio: divide y vencerás.