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

Validação de usuario

Bom, terminei o curso de Spring Boot parte 2 e estou incrementando um pouco o projeto, fiz o cadastro de usuarios e tambem a inserção de respostas... Mas estava aqui pensando que seria muito interessante poder validar as operações dos usuarios, por exemplo: o usuario 1 nao pode deletar ou editar um tópico criado pelo usuario 2, mas do jeito que o código está no momento, do jeito que foi feito no curso, eu não consigo pegar o Id do usuario que enviou a requisição,então basta estar com um token, ou seja, basta estar logado para poder fazer qualquer coisa dentro da api, apagando e alterando qualquer coisa.

Eu estava pensando em duas possibilidades pra pegar o Id: a primeira ideia seria "pendurar" na requisição, assim que o token passar pelo filter, entao eu iria adicionar um parametro na requisição e poderia ter acesso a esse parametro dentro do controller ... e a outra ideia seria simplesmente criar um metodo pra pegar o token, mas esse metodo iria praticamente ser uma copia do Filter de autenticacao, então nao sei se isso é uma boa prática.

Alguém tem alguma ideia de como fazer isso? eu acho que minhas duas ideias estão erradas rsrsr

2 respostas
solução!

Já descobri, eu olhei no metodo que autentica o cliente, ele faz isso pra cadastrar o usuario:

    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
        SecurityContextHolder.getContext().setAuthentication(authentication);

então eu só usei um System.out.println(SecurityContextHolder.getContext().getAuthentication().getName());

e ele me trouxe o email do usuario que foi autenticado com esse token, e a parte boa é que dá pra usar esse unico metodo em qualquer parte do codigo, pq é metodo estatico do SecurityContextHolder

Perfeito Vinicius

Se quiser dar uma olhada, tem uma feature de Roles e Privileges no Spring Security que pode ser interessante nesse caso também :)

Segue link:

https://www.baeldung.com/role-and-privilege-for-spring-security-registration

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