6
respostas

capturar dados de mais de um parâmetro enviado do token pela api

Bom dia, estou com uma duvida em um problema de situação no qual meu back-end me envia os dados da api de login com token e mais um parametro chamado sessao, no qual traz mais informações porem descriptografadas, eu preciso guardar estas outras informações para usar na aplicação, vou demostrar mais ou menos como os dados estão vindo da api.

{
        "token": " ** CRIPTOGRAFIA DO TOKEN ** ",
    "sessao": {
            "campo1": " **Dados Vindo Da Base** ",
            "campo2": "**Dados Vindo Da Base**",
            "campo3": "**Dados Vindo Da Base**",
            "campo4": "**Dados Vindo Da Base**",
            "campo5": "**Dados Vindo Da Base**",
            "campo6": "**Dados Vindo Da Base**",    
    }
}

eu precisava conseguir capturar a "sessao" e os dados nos quais vem os campo1, campo2... alguma ideia ? tentei fazer pelo mesmo modo do token, porém sem sucesso, ele vem exatamente nessa estrutura da api.

6 respostas

Boa tarde, Gabriel! Como vai?

Como está o código onde vc tentou obter os dados dessa propriedade "sessao"? Vc poderia postar ele aqui para que eu possa dar uma olhada e tente te ajudar?

Boa tarde, Gabriel ! :D, tudo ótimo e por ai ? o método é como o da aula, porém o back-end ta enviado os dados do post do login em forma de array com o token e esta sessao com alguns campos, preciso saber como pega os valores agr, para poder passar o token vindo deste array para realizar a validação.

public autenticar(usuario: string, senha: string): Observable<ArrayBuffer> {

        // Montando o Header para ser enviado a API com os campos da API necessário no lado esquerdo (Key) e no lado direito o valor (Value)
        this.headers = { 

            headers: new HttpHeaders({ 

                jwtusername: usuario,
                jwtpassword: senha

            })

        };

        // Passando o Header no terceiro parametro que é proprio para parametros ou header, não passa nada no body pois não é necessário

        return this.httpClient
            .post(API + '/login', { }, this.headers)
            .pipe(tap(res => {
                this.usuarioServico.setToken(res['token']);;
            }));

    } // autenticar

ai os outros comandos com jwt são todos da aula.

Opa! Tudo ótimo!

Se vc fizer um res['sessao'] para pegar os dados da "sessao" não funciona?

Faça um console.log(res) da forma a seguir e mande aqui o resultado, por favor.

return this.httpClient
            .post(API + '/login', { }, this.headers)
            .pipe(tap(res => {
                console.log(res); // adicione essa linha!
                this.usuarioServico.setToken(res['token']);
            }));

Então coloquei o console.log ele esta retornando null, ou seja a sessão não esta pegando nem o token hehehehe. precisaria pegar pelo menos o token já que segundo a minha api do back-end ele virou um array mais estou perdido para pegar este valor e setar no

this.usuarioServico.setToken(res['token']);

que no caso achei que seria dessa maneira:

this.usuarioServico.setToken(res['token'][0]);

porém sem sucesso, minha aplicação não realiza login mais por falta do token não conseguir ser carregado.

Gabriel, eu percebi algumas inconsistências em relação ao seu código e o que o instrutor mostrou durante a aula!

Repare aos 8:52 dessa aula que no segundo parâmetro do método post() o instrutor passa um objeto JavaScript com o nome do usuário e senha dele. Além disso, no terceiro parâmetro, é enviado um segundo objeto JavaScript com a configuração { observe: 'response' }.

Já o seu código não segue o mesmo padrão! Faça as correções necessárias no seu código e veja se resolve o seu problema!

No entanto, caso continue dando problema é só falar aqui que eu tento te ajudar!

Gabriel, eu refiz os passos das aulas alterando para ficar idênticos aos da aula, porém continou sem passar token, o problema está sendo em pegar a primeira posição do array que é o token e jogar para o setToken, conseguindo pegar a primeira posição e passar para guardar o token, os outros devem seguir o mesmo padrão.