¿Cómo puedo verificar los permisos de Shiro para la lista de elementos?

Tengo una solicitud de Hibernate que me devuelve una lista de elementos para mostrar. Necesito verificar si el usuario actual puede ver cada elemento devuelto. Puedo hacerlo algo como esto

for (Element e : elements) { 
    SecurityUtils.getSubject().hasPermission("element:view:" + e.id);   
}

pero este código generará x solicitudes a la base de datos por cada elemento. Entonces la velocidad de verificación será O (n).

¿Cómo puedo mejorar mi solución? ¿Es posible obtener la velocidad O (1)?

Respuesta 1

Hay un método llamado isPermittedAll(String ...)Asunto que volverá truesi el Asunto tiene todos los permisos.

Ver: http://shiro.apache.org/static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermittedAll%28java.lang.String...%29

Aunque, para ser honesto, no sé cuánto más eficiente es en términos de consultas db (si es que lo hace).

Respuesta: 2

Shiro admite el almacenamiento en caché, puede utilizar para este tipo de acciones si esta lista de construcción mucho. http://shiro.apache.org/caching.html

Respuesta: 3

Soy nuevo en Java y estoy aprendiendo a depurar en Eclipse. Recibo un error extraño en el que el depurador no puede ingresar a una función por primera vez, pero lo hace con éxito la segunda vez. ...

Tengo una entrada de señal de audio como una matriz de doble. Me gustaría hacer cuadros de esa señal al segmentarlos en cuadros de análisis en ventanas de 25 ms con una superposición del 50%. Tengo un código para ...

He estado buscando un marco de visualización que ayude a la visualización de gráficos en Android. He encontrado una gran cantidad de marcos de gráficos, pero ninguno que permita la visualización de gráficos y ...

Tengo un problema, tengo un proyecto que se basa en un sistema que incluye módulos. Estos módulos son otros proyectos de Maven y están referenciados desde el sistema POM. Mi problema es que estoy compartiendo el sistema ...