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

Erro ao acessar timeline pública com token deletado

Quando tento acessa a timeline pública, deslogado – ou seja http://localhost:8080/api/fotos?X-AUTH-TOKEN=null – recebo do servidor um erro 403:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Oct 23 13:07:39 BRST 2017
There was an unexpected error (type=Forbidden, status=403).
Access Denied

Como consequência, o código

    componentDidMount() {
        fetch(`http://localhost:8080/api/fotos?X-AUTH-TOKEN=${localStorage.getItem('auth-token')}`)
            .then(response => response.json())
            .then(fotos => this.setState({fotos : fotos}));
    }

não tem uma resposta válida do servidor, que também quebra o render abaixo:

    render() {
        return (
            <div className="fotos container">
                {
                    this.state.fotos.map( foto => <FotoItem key={foto.id} foto={foto}/> )
                }
            </div>
        );
    }

Alguma sugestão de como resolver esse problema? Apenas para não quebrar, coloquei um teste de resposta como Array:

            .then(fotos => {
                if (Array.isArray(fotos)) {
                    this.setState({ fotos: fotos });
                }
            });

Obrigado.

3 respostas
solução!

Oi Rodrigo, tudo bem ?

Para esse tipo de caso, você precisa fazer um tratamento para tentar gerar um token, que deve solucionar o problema.

Precisaria validar se existe um token gerado mas vai perceber que como para chegar a timeline é obrigado a estar logado e neste caso o token seria gerado.

Pode verificar no state quando for setar a propriedade por exemplo.

Faz assim que vai resolver teu problema:

 this.setState({ ...this.state, photo: photo.status ? [] : photo });