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

275
Views
¿Cómo @PreAuthorize verifica los roles?

Tengo varias API REST.

Me gustaría poner Seguridad encima de todos ellos, para permitir las funcionalidades solo para ciertos roles.

Puse @EnableGlobalMethodSecurity(prePostEnabled = true) en la clase de configuración.

Tengo una base de datos con una tabla que almacena los roles.

 @RequestMapping(path = "/error", method = RequestMethod.GET) @PreAuthorize("hasRole('ROLE_ADMIN')") public ResponseEntity<ResponseWrapper> getError(... INSERT INTO table USER_ROLE VALUES ('ADMIN','PASSWORD','ROLE_ADMIN');

¿Cómo puede el método "hasRole" consultar la tabla USER_ROLE? ¿Hay alguna configuración que deba darle a Spring para poder comunicarme con esa mesa?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Asegúrese de agregar lo siguiente a su configuración:

Estilo de anotación:

 @EnableGlobalMethodSecurity(prePostEnabled = true)

Estilo XML:

 <global-method-security pre-post-annotations="enabled"/>

Todo está en los documentos de primavera .

El uso de anotaciones @Pre y @Post requiere que primero haya configurado Spring Security en su proyecto. Los roles de usuario se cargan durante la autenticación en la implementación estándar.

No verifica su tabla cuando verifica la anotación (de manera predeterminada), solo verifica el objeto Principal (Usuario) en la memoria para la lista de GrantedAuthority asignada (Roles).

Una mirada más cercana...

Eche un vistazo a la interfaz UserDetailsService , esto devuelve una instancia de UserDetails (el Principal ). Aquí es donde obtenemos su "usuario" de la base de datos.

La interfaz UserDetails define un método llamado getAuthorities() que devuelve un Collection<? extends GrantedAuthority> , esencialmente su tabla de Role . Aquí es donde los "Roles" se almacenan en la memoria y luego se pueden verificar mediante las anotaciones @Pre y @Post .

La implementación que he explicado anteriormente se puede encontrar aquí .

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!