Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

351
Views
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?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

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.

about 4 years ago · Santiago Trujillo Report

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

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!