Pregunta

Estoy escribiendo una aplicación web utilizando Struts e Hibernate. Recientemente, he descubierto GWT y la API de visualización . Todo esto parecía muy interesante y proporciona funcionalidades AJAX que mis necesidades de aplicaciones. Soy un novato que está bastante confundido ....

¿Dónde poner las pruebas de nivel de acceso a datos?

En la aplicación web, los usuarios tienen diferentes niveles de acceso para los datos. p.ej. diferentes combinaciones de privilegios de lectura / escritura para diferentes datos. Habrá algún tipo de perfil de usuario que los controles de aplicaciones para cuando se accede o modifica los datos. El usuario tendrá acceso a los datos según el resultado - negó acceso de visualización ni puede ver los datos, pero no puede cambiarlo, etc. No estoy seguro de dónde poner este control en particular. Creo que podría haber es codificada en el DAO de , la operación de datos cada vez que se procesa, comprobar manualmente los datos consultados contra el perfil. O, lo puso en el lógica de negocio / capa de visualización , si un usuario no tiene un privilegio de acceso a datos, tomar el botón lejos del usuario. O ambos ? O hay un archivo de configuración en hibernación un lugar donde pueda especificar los privilegios de acceso de datos para todas las tablas de mapeado?

Las mejores prácticas para la transmisión de información en torno

Hay una gran necesidad de comunicación entre el modelo / vista / controlador, hacer llamadas RPC para GWT y pasar datos fuera al código de visualización para producir gráficos y otras cosas. Supongo que sin duda necesita algún tipo de Traductor que convierte los objetos de Java en objetos JSON con el fin de hacer llamadas GWT-RPC y dibujar gráficos con la API de visualización. ¿Estoy en lo correcto? Asimismo, en términos de la información que pasa alrededor de puntales y Hiberante - está escribiendo Objetos de transferencia de datos una buena idea? Entonces sólo tiene que pasar granos alrededor de todo el tiempo? O (Acabo de encontrar este today..not seguro si he entendido correctamente) puede que unen los objetos en JNDI , y acceder a ellos desde otras partes del programa?

Cualquier entrada / aclaración se apreciará. Muchas gracias!

¿Fue útil?

Solución

controles de nivel de acceso:

Me separar los controles de nivel de acceso en su propia clase, y tienen sus "controladores" llamar a los gerentes de acceso primero antes de llamar a DAO de. es decir, cada acción realiza una comprobación antes de hacer la DAO llama para obtener los datos de inserción /.

sino un método mejor, si está utilizando GWT, es hacer llamadas RPC en lugar de utilizar las acciones puntales. las llamadas RPC se convierte en "controladores" que he mencionado anteriormente, y pueden hacer controles de acceso que utilicen los gerentes que he mencionado anteriormente - es decir, acciones elminitate.

En cuanto a los gestores de acceso, recomiendo la enumeración de todos los privilegios de acceso granular y el componer estos privilegios en un conjunto que se puede asociar con cada usuario / perfil / lo que sea.

pasar información en torno GWT es un dolor para trabajar con Hibernate - usted puede intentar usar Gilead , pero no he tenido mucho éxito con él , es demasiado complicado para mí. su idea con JSON conversión es el camino correcto a seguir en GWT en mi humilde opinión. GWT 1.5 soporta Javascript a qué se llama superposición de objetos, lo que le permite volver JSON, y "superponer" en un objeto java gwt directamente con poco código de su parte. echa un vistazo a este post para más información.

El otro método consiste en rodar su propia planta generadora de DTO (que es lo que Gilead está destinado a hacer, pero no creo que lo hace autogeneración? No estoy seguro). implementarlo como parte de su construcción. es un poco de trabajo extra que no sería vale la pena si no es un gran proyecto.

Otros consejos

No puedo hablar mucho sobre su primera pregunta, porque realmente no me gusta usar puntales para cualquier cosa relacionada con GWT.

En cuanto a su segunda pregunta, no, no debería tener que utilizar ningún JSON. Parece que su extremo posterior es Java, lo que significa que el mecanismo de GWT RPC se acaba de trabajar con POJOs. Así que usted acaba de crear los objetos necesarios para el dibujo y pasarlos de ida y vuelta entre el cliente y el servidor. GWT va a hacer todas las cosas RPC para que fuera de la caja.

Los objetos de transferencia de escritura de datos pueden ser necesarias, pero sólo si sus archivos de modelo de hibernación contienen cosas que el compilador GWT no pueden entender. Normalmente EJB3 de usuario y rayas (en lugar de Hibernate y Struts) y en mi caso no tengo que escribir cualquier objeto de transferencia de datos, sólo tiene que utilizar los POJOs EJB3 y pasarlas entre mi cliente y el servidor.

pruebas de nivel de acceso a datos en el lado del servidor es la forma más segura. Pero aún así GWT genera un JS lleno. Puede hacerlo en el lado del cliente. Pero en ese caso, el perfil de usuario deben ser comprobados y / o exagerado en / desde el lado del servidor cada vez.

pasando información en torno a: estoy usando cadenas delimitadas en el vector. Y que está funcionando bien ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top