Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

272
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda