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

273
Vistas
¿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 Respuestas
Responde la pregunta

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 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