Pregunta

Tengo un mecanismo de seguridad bastante sofisticado que he implementado usando Apache Shiro (anteriormente JSecurity). Con el fin de conocer las reglas de visibilidad exactas de un objeto, se necesita para ejecutar un código (roles es decir, las operaciones de búsqueda del usuario, permisos, grupos, etc.). Me gustaría ejecutar consultas que DIME objetos que el usuario actual está autorizado a ver.

He encontrado que los filtros de hibernación le dan capacidad de aplicar un filtro a los objetos / consultas, lo que parece ser lo que podría utilizar aquí.

Sin embargo, los ejemplos que encontré parecen estar centrado en la base de datos (es decir, decir que tengo un campo / columna isVisible, filtro cada vez que está establecido en true). ¿Hay alguna manera de ejecutar algún código como un filtro de hibernación, o es sólo una fina capa que añade un poco cláusula WHERE para todas sus consultas.

De hecho, estoy usando esta infraestructura Grails / GORM en el interior, así que quizás hay otras soluciones que son válidos. Un complemento existe que integra filtros de hibernación, pero a menos que pueda usarlo con algo de código para funcionar como parte del proceso de filtrado de hibernación, no va realmente me ayuda aquí.

¿Fue útil?

Solución

Por desgracia, los filtros de Hibernate no va a resolver su problema. Pueden ser muy útiles, pero es exactamente una fina capa que añade un poco de cada cláusula WHERE para obtención de información.

Dado que está utilizando Grails, puede encontrarse con que AOP le dará lo que estás buscando. Echar un vistazo a esto: http://www.infoq.com/articles/aop- con-maravilloso

Buena suerte.

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