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

Erro no upload

Quando clico no botão de upload recebo o seguinte erro no console:

Failed to load resource: the server responded with a status of 401 (Unauthorized)

Até pensei que poderia ser algum erro meu durante a implementação do que foi mostrado na aula, mas mesmo fazendo o download do projeto disponibilizado na explicação e rodando o npm install o erro continua. Alguém faz ideia do que pode estar acontecendo?

5 respostas

Já experimentou fazer logout e depois o login antes de tentar fazer o upload. Isso esta com cheio de token expirado no seu navegador ou algum problema na autenticação. Aguardo seu retorno.

Funcionou, Flávio! Como a maioria dos problemas sair e entrar novamente resolveu hahaha. Eu estava limpando o cache e reiniciando o terminal imaginando que poderia ser o problema. Existe algum modo de verificar se o token expirou e redirecionar o usuário para a tela de login?

Existe sim! Eu devo abordar isso num provável quinto curso de Angular, mas vou adiantar a solução para você. Segura as pontas ai que no máximo até o final do dia eu passo o truque :)

solução!

Então, vou responder logo porque você pode estar precisando. No seu TokenService, adicione o seguinte método:

import { Injectable } from '@angular/core';
// importou o decode
import * as jtw_decode from 'jwt-decode';


const KEY = 'authToken';

@Injectable({ providedIn: 'root'})
export class TokenService {

    // outros métodos omitidos

    hasExpired() {
        if(this.hasToken()) {
            const token = jtw_decode(this.getToken());
            const currentTime = Date.now() / 1000;
            return token.exp < currentTime;
        }
       return false;
    }
}

O método hasExpired retornará false se o token expirou. Dai, é só injetar o serviço e utilizar esse método nos lugares apropriados. Pegou mais ou menos a ideia? O mais chatinho mesmo é a lógica para saber se o token é inválido, isto é, se ele expirou.

Deu certo. Muito obrigado, Flávio! :)