Pergunta

Eu tenho um mecanismo de segurança bastante sofisticado que eu implementado usando Apache Shiro (anteriormente JSecurity). A fim de conhecer as regras de visibilidade exatas para um objeto, eu preciso executar algum código (papéis ou seja lookup do usuário, permissões, grupos, etc). Eu gostaria de executar consultas que me dizem objetos que o usuário atual está autorizado a ver.

Eu achei que os filtros de hibernação dar-lhe capacidade de aplicar um filtro para seus objetos / consultas, o que parece ser o que eu poderia usar aqui.

No entanto, os exemplos que eu encontrei parecem estar centrada no banco de dados (ou seja, dizer que tenho um campo / coluna isVisible, filtro sempre que ele é definido como true). Existe uma maneira que eu possa executar algum código como um filtro de hibernação, ou é apenas uma fina camada que acrescenta um pouco de onde cláusula para todas as suas consultas.

Na verdade, estou usando essa infra-estrutura dentro Grails / GORM, por isso, talvez há algumas outras soluções que são válidas. A plug-in existe que integra hibernar filtros, mas a menos que eu possa usá-lo com algum código para executar como parte do processo de filtragem de hibernação, não vai realmente me ajudar aqui.

Foi útil?

Solução

Infelizmente, os filtros do Hibernate não vai resolver o seu problema. Eles podem ser muito úteis, mas é exatamente uma camada fina que adiciona um pouco de cláusula WHERE para cada busca.

Uma vez que você estiver usando Grails, você pode achar que AOP vai dar o que você está procurando. Dê uma olhada nisso: http://www.infoq.com/articles/aop- com-Groovy

Boa sorte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top