Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

@AuthenticationPrincipal UsuarioLogado logado null

Olá. Será que alguém pode me informar o por que do meu objeto estar vindo null para @AuthenticationPrincipal UsuarioLogado logado? Mesmo estando logado?

6 respostas

O meu chute é que você ta recebendo como argumento um tipo incompatível com sua classe que representa o usuário... Se você trocar o tipo do parâmetro para Object, ainda vem null?

solução!

Olá Alberto, Vendo a sua sugestão troquei o tipo do método de ResponseEntity para Object e os dados vieram. Sabe o por que disso?

Opa, que bom. O parâmetro precisa ser compatível com a interface UserDetails.

Por que explicar melhor ou enviar um link para eu tirar essa dúvida?

Nessa método o objeto do usuário esta vindo nulo: @RequestMapping(value = "listAll{id}", method = { RequestMethod.GET, RequestMethod.POST }, produces = "application/json") public @ResponseBody Object getListReceitas(HttpServletRequest request, @PathVariable("id") Long id, @AuthenticationPrincipal UsuarioLogado logado) { System.out.println("Usuário (" + logado.getId() + ").");}

Olá amigo, já passei por isso também.

Acontece que o Spring tenta fazer uma reflection e dar bind nos valores. Por mais que posssa haver polimorfismo, quando declaramos:

@AuthenticationPrincipal usuario u

Neste caso não se aplica o polimorfismo, logo os valores não conseguirão dar bind e virão objetos nulos. Uma solução: declare todos os tipos possiveis, exemplo:

metodo (@AuthenticationPrincipal usuarioAdm uAdm, @AuthenticationPrincipal usuarioAdm2 uAdm2, @AuthenticationPrincipal usuarioAdm3 uAdm3)

Então verifique se eles estão nulos para saber com qual menipular.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software