es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo verificar el acceso de seguridad antes de la validación (@Valid) en el controlador?

Estoy creando una API Restful con Spring Boot 2.5 y me gustaría saber la manera correcta de implementar validación mientras se verifica los roles para algunas rutas. Además, para algunas rutas necesito asegurarme de que solo los administradores puedan modificar el recurso o su propietario.

@PreAuthorize parece ser la solución, pero @Valid parece ser procesado antes de una llamada real al método, lo que se conoce como ejecutado antes de @PreAuthorize.

Ver: https://stackoverflow.com/questions/22780668/how-to-check-security-acess-secured-or-preauthorize-before-validation-vali

¿Es esta realmente la única solución disponible y limpia para crear una API Restful con validación y roles utilizando Spring Boot y Spring Security?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en Java, Spring y Spring Security, sugeriría utilizar una combinación de @PreAuthorize y anotaciones de validación personalizadas para implementar la validación mientras se verifican los roles para algunas rutas, así como asegurarse de que solo los administradores puedan modificar el recurso o su propietario.

    Para implementar esto, puede crear anotaciones de validación personalizadas que verifiquen cualquier criterio adicional específico de su API (por ejemplo, el propietario del recurso) y utilizar @PreAuthorize para verificar los roles del usuario. De esta manera, puede garantizar que tanto la validación como la verificación de roles se realicen antes de la llamada al método.

    Si bien puede parecer que @Valid se procesa antes de @PreAuthorize, el uso de anotaciones personalizadas le permite validar solo los campos relevantes para el caso de uso específico y no todo el objeto. Esto puede garantizar que la validación se realice de manera eficiente y proporcione una mejor experiencia de usuario.

    En general, este enfoque proporciona una solución limpia y eficiente para implementar tanto la validación como los roles en su API Restful con Spring Boot y Spring Security.

Comments are closed.