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

Dúvida no Ex. 6 da Aula 12 - Autenticação baseada em token

Olá,

Baixei o projeto final do curso, apaguei os arquivos da pasta node_modules executei os comandos: npm init npm install npm start

Acessei o navegador pelo endereço: http://localhost:3000

Tudo certo abriu a página de login, (antes disso ja tinha criado o usuario e senha no banco mongo) digitei login e senha corretos, mas não consegui logar, no console aparece mensagem;

invalid "expiresIn" option for string payload

Alguém poderia me ajudar? O que acabei esquecendo de verificar? :-(

4 respostas

Oi Márcia, eu vou verificar para você. Já já dou um feedback.

Colocando alguns logs aqui ele não cria o token:

var token = jwt.sign(usuario.login, app.get('secret'), { expiresIn: 86400 });

console.log(token);

Não retireciona para /#/fotos, tb verifiquei no navegar nao aparece o token.

obrigada,

solução!

Oi Márcia, esse foi tenso achar o problema. No vídeo, eu peço para instalar a versão 5.4.1 do jsonwebtoken, certo? Porém, na hora de gravar o vídeo eu internamente estava usando uma antiga! Qual o problema?

Na versão antiga, o primeiro parâmetro pode ser uma string, na versão mais nova (a que eu peço para usar) não pode ser string direto, tem que ser um objeto Javacript.

Ou seja, onde temos:

 var token = jwt.sign(usuario.login, app.get('secret'), {
                     expiresIn: 84600
});

Temos que mudar para:

 var token = jwt.sign( {login: usuario.login}, app.get('secret'), {
                     expiresIn: 84600
});

Veja que agora não passo uma string, mas um objeto Javascript com a propriedade login.

Já atualizei a explicação, vou subir o projeto final completo atualizado e vou pedir para a equipe de edição colocar uma errata no vídeo.

TEste para mim com essa alteração e veja se funciona para você também.

Aguardo seu retorno.

Tudo certo. Funcionou perfeitamente!

Obrigada!