sirven - reflection en java
Caso de uso válido para las anotaciones @PostAuthorize y @PostFilter (2)
Tanto el @PostAuthorize
como el @PostFilter
se usan, principalmente, en combinación con ACL. Donde @PostAuthorize
generará una excepción si se devuelve algo a lo que no se tiene acceso, el @PostFilter
eliminará los objetos a los que no se tiene acceso (en general, útiles al devolver colecciones de elementos).
Acabamos de migrar a Spring Security 3.0.8 desde 2.0.8 (podemos actualizar a la versión más reciente que es 3.2.X ya que nuestras bibliotecas principales de primavera todavía están en 3.0.X , y planeamos actualizarlas más adelante cuando el negocio lo permita).
Entiendo que ahora tenemos anotaciones para asegurar métodos como @PreAuthorize
, @PostAuthorize
, @Secured
, @PreFilter
y @PostFilter
.
Entiendo el uso de @PreAuthorize
, que realmente tiene sentido. ¿Pero no puede pensar en ningún caso de uso válido donde alguna @PostAuthorize
@PostFilter
anotación @PostAuthorize
o @PostFilter
?
¿Puede alguien que lo usó explicarme un caso de uso razonable para usarlo?
¡Gracias por adelantado!
@PostFilter
filtra la colección devuelta o las matrices después de ejecutar el método. Spring security proporciona un objeto incorporado denominado filterObject en el que @PostFilter
realiza la tarea de filtrado.
@PostFilter
se puede usar en la capa de servicio con @PreAuthorize
y @PostAuthorize
.
Use la interfaz para declarar la operación del filtro.
public interface IBookService {
@PreAuthorize ("hasRole(''ROLE_READ'')")
@PostFilter ("filterObject.owner == authentication.name")
public List<Book> getBooks();
@PreFilter("filterObject.owner == authentication.name")
public void addBook(List<Book> books);
}