Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

353
Vistas
Combinando la anotación @Secured y @PreAuthorize en un método

Tengo el siguiente método de servicio en mi aplicación:

 @Override @Secured({Authority.ACCESS_FUNDING}) @PreAuthorize("hasPermission(principal, 'MODIFY')") public FundingAllocation newFundingAllocation(FundingAllocationForm fundingAllocationForm) { return newFundingAllocation(fundingAllocationForm, null); }

Pero noté que la anotación @Secured se ignora y solo se realiza la verificación @PreAuthorize .

Tengo la siguiente configuración de seguridad de primavera:

 <security:global-method-security secured-annotations="enabled" pre-post-annotations="enabled"> <security:expression-handler ref="securityExpressionHandler"/> </security:global-method-security>

¿Alguien sabe si es posible combinar anotaciones en un método?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Según el Javadoc sobre DelegatingMethodSecurityMetadataSource , utilizará la primera fuente de metadatos que encuentre. Así que no se pretende mezclar los dos. El fundamento también se explica en https://github.com/spring-projects/spring-security/issues/2116

Los documentos oficiales también indican:

Puede habilitar más de un tipo de anotación en la misma aplicación, pero solo se debe usar un tipo para cualquier interfaz o clase, ya que, de lo contrario, el comportamiento no estará bien definido. Si se encuentran dos anotaciones que se aplican a un método en particular, solo se aplicará una de ellas.

Así que simplemente no lo hagas y escribe la expresión correcta en tu @PreAuthorize :

 @PreAuthorized("hasAuthority('ACCESS_FUNDING') and hasPermission(principal, 'MODIFY')")

como sugiere la respuesta de jmw5598.

over 4 years ago · Santiago Trujillo Denunciar

0

Con @PreAuthorize y @PostAuthorize puede combinar expresiones con los operadores and y or .

 @Override @PreAuthorized("hasAuthority('ACCESS_FUNDING') and hasPermission(principal, 'MODIFY')") public FundingAllocation newFundingAllocation(FundingAllocationForm fundingAllocationForm) { return newFundingAllocation(fundingAllocationForm, null); }

Espero que esto sea útil.

http://docs.spring.io/spring-security/site/docs/current/reference/html/el-access.html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda