1
resposta

[Dúvida] Token do "User" deve dar acesso somente aos dados dele

Estou fazendo uma aplicação que tem vários usuários. Preciso que o token do user X seja útil para pegar somente dados relacionados a ele. Pelo que entendi ao fim do curso, fazendo login com qualquer credencial e pegando um token valido eu posso pegar dados de qualquer médico... Eu gostaria que o medico "João" pegasse somente os dados dele e não de outro médico, caso ele pegue o endpoint mude o id ou e-mail na hora da consulta, assim ele teria acesso de outros médicos.

Preciso de pelo menos um norte de como pesquisar uma possivel solução de ligar o token a um user especifico.

1 resposta

Oi!

Nesse caso você vai precisar injetar o usuário logado no controller. Exemplo:

@GetMapping("/{id}")
public ResponseEntity detalhar(@PathVariable Long id, @AuthenticationPrincipal Usuario logado) {
    //logica do método
}

E então pode fazer uma lógica para checar se o usuário logado tem permissão para manipular o registro solicitado. Exemplo:

@GetMapping("/{id}")
public ResponseEntity detalhar(@PathVariable Long id, @AuthenticationPrincipal Usuario logado) {
    if (logado.getId() != id) {
        return ResponseEntity.status(403).body("você não tem permissão para acessar tal informação!");
    }
    
    //logica...
}