Dúvida sobre roles do Spring Security

4 respostas Resolvido
F

Boa tarde pessoal!

Primeiramente feliz natal para todos, tudo de melhor pra vocês!

Seguinte:

Sou aluno do Alura e finalmente to tendo algum progresso. Finalizei os cursos de Spring Boot do Professor Rodrigo Ferreira e estou começando os cursos de Vue.js do Professor Flávio Almeida.

Minha dúvida é: Como identificar o role do usuário que fez autenticação com JWT token no front-end? O front-end que tem que decodificar o token ou é papel do back-end? Alguém poderia me ajudar com esse fluxo?

Por exemplo, na minha aplicação, somente quem tem ROLE_ADMIN pode adicionar novos usuários. Pelo que li o role vem dentro do token, então faz sentido pra mim decodificar o token no front-end, mas gostaria de confirmar.

Obrigado desde já! Boas festas pessoal!

PS: Coloquei o tópico na categoria Java pois não sabia de quem era a responsabilidade dessa parte de autenticação, peço desculpas antecipadas se errei!

4 Respostas

Jonathan_Medeiros

Talvez hajam divergência das possíveis ideias de solução, mas do meu ponto de vista, dado que o JWT segue um padrão único e já carrega as informações necessárias sobre o usuário autenticado, entendo que o front poderia tratar isso no que diz respeito à movimentar dados e acessos as telas, porém, o backend também deve garantir a segurança dos dados que cada usuário pode movimentar para cada endpoint que sua aplicação dispõe.

F

Feliz natal Jonathan! Muito obrigado pela resposta!

Acho que essa parte de verificação de endpoint no back-end não é tão complicada, gostaria mesmo é de um exemplo de como decodificar o token e fazer os acessos de acordo com o role no front-end, porém creio que eu precise criar outro tópico na categoria correta, certo?

Obrigado mais uma vez!

Jonathan_Medeiros
Solucao aceita

Decodificar o JWT é algo bem simples, já existem libs prontas para fazer isso!
Depois basta você criar suas tratativas de acordo com a role contida no token!

Exemplo de decode JWT:

npm install jwt-decode

var jwtDecode = require('jwt-decode');

var token = 'seuTokenJWT';

var decodedToken = jwtDecode(token);
console.log(decodedToken);
F

Obrigado pela ajuda!

Criado 25 de dezembro de 2020
Ultima resposta 28 de dez. de 2020
Respostas 4
Participantes 2