Saltar al contenido

Objetos de Datos Parametrizados

En escenarios típicos, los desarrolladores restringen el acceso a las filas utilizando el objeto de datos. WHERE cláusula. Esto ocurre en tiempo de diseño. El objeto de datos puede estar restringido en tiempo de ejecución por criterios de enlace de página o panel. Por ejemplo, un panel de una sola fila debe vincularse de tal manera que el objeto de datos devuelva una sola fila. Independientemente, el usuario tiene permiso para ver cualquier fila en el objeto de datos dado, siempre que no esté excluida por el objeto de datos. WHERE cláusula.

Sin embargo, en algunos escenarios, es posible que los desarrolladores necesiten restringir el acceso a las filas de objetos de datos en tiempo de diseño según los criterios vinculantes proporcionados en tiempo de ejecución. En estos escenarios, el usuario sólo debería poder acceder a las filas que pueda identificar.

Por ejemplo, imagine una aplicación de autorregistro que permita a los usuarios crear cuentas. La aplicación envía un correo a una dirección de correo proporcionada por el usuario. El correo contiene un enlace a la solicitud de autorregistro. El enlace en sí contiene un token secreto que se pasa como criterio vinculante a la página de confirmación. Esto permite al usuario ver y confirmar su registro pendiente.

En el escenario de autorregistro, el desarrollador debe asegurarse de que el objeto de datos de la página de confirmación esté vinculado por el token secreto. De lo contrario, un usuario malintencionado podría simplemente eliminar el token secreto de la URL para ver otros registros pendientes. Esto permitiría al usuario confirmar el registro de una dirección de correo a la que no tiene acceso.

Para evitar que esto suceda, el desarrollador debe asegurarse de que el usuario proporcione su token secreto al consultar las confirmaciones pendientes. Esto se puede lograr utilizando un objeto de datos parametrizado.

Para crear un objeto de datos parametrizado, el desarrollador debe indicar que una o más columnas son "vinculantes". En tiempo de ejecución, antes de ejecutar el evento Filter, Vinyl afirmará que el cliente ha proporcionado valores para cada columna de enlace. Si no se ha proporcionado un valor de columna vinculante, Vinyl generará una excepción. Esto evita que los usuarios (maliciosos o no) ejecuten una consultar que recupere cada fila del objeto de datos. En el ejemplo de autorregistro, el usuario solo puede recuperar una confirmación pendiente si ya conoce el token secreto.

Problemas Conocidos y Limitaciones

  • Los desarrolladores no pueden utilizar la vista Resultados para consultar un objeto de datos parametrizado. La vista Resultados se ejecuta sin ningún criterio vinculante.
  • Los eventos del objeto de datos parametrizados no se pueden programar. Vinyl no proporciona criterios vinculantes al consultar el objeto de datos del evento programado.