1
resposta

Não consigo acessar o s dados do Payload no accessToken da response para o front

ola!!!

Criei um front para fazer as requisições com axios para essa API , mas dentro da response o accesstoken vem apenas com a string da criptografia , não estou conseguindo emcontrar os dados de email e ID para salvar no local storage,Insira aqui a descrição dessa imagem para ajudar na acessibilidade

segue uma imagem do localStorage, com o accessToken retornado , e nessa chave user que esta abaixo eu queria salvar os dados do payload.

obrigado

1 resposta

Olá, Wagner!

Tudo bem?

Desculpa a demora, estou respondendo esse tópico para tentar ajudar você e outros alunos que estiverem com essa mesma dúvida, e também para organizar o nosso fórum. Valeu :)

Pelo que você descreveu, parece que você está tentando acessar os dados do payload diretamente do token de acesso. O token de acesso é geralmente uma string codificada que contém as informações do payload, mas essas informações não são diretamente acessíveis sem decodificação.

O token de acesso é criado usando o método JWT (JSON Web Token), que codifica o payload em uma string. Para acessar os dados do payload, você precisará decodificar o token de acesso.

No entanto, é importante notar que, por razões de segurança, o token de acesso não deve ser decodificado no lado do cliente. Em vez disso, o servidor deve fornecer uma rota que permita ao cliente solicitar as informações do usuário usando o token de acesso.

Aqui está um exemplo de como isso pode ser feito no Node.js:

app.get('/userinfo', (req, res) => {
  const token = req.headers.authorization.split(' ')[1]; // extrair o token do cabeçalho de autorização
  jwt.verify(token, 'seu segredo JWT', (err, user) => { // verificar e decodificar o token
    if (err) {
      res.sendStatus(403);
    } else {
      res.json({
        email: user.email,
        id: user.id
      });
    }
  });
});

No lado do cliente, você pode então fazer uma solicitação para essa rota e salvar as informações do usuário no localStorage:

axios.get('/userinfo', { headers: { Authorization: `Bearer ${accessToken}` } })
  .then(response => {
    localStorage.setItem('user', JSON.stringify(response.data));
  })
  .catch(error => {
    console.error('Erro ao buscar informações do usuário', error);
  });

Lembre-se de substituir 'seu segredo JWT' pela sua própria chave secreta usada para assinar o token.

Espero ter ajudado e bons estudos!