Função de verificação de token não retorna true ou false

22/09/2021

10

Estou tentando fazer uma função que controla o acesso a algumas rotas React da minha aplicação.

Essa função verifica se o usuário está logado ( verifica se ele possui um token), envia uma requisição para a API com o token, verifica se o token enviado é válido ou não, e retorna uma resposta.

• Se a resposta da minha função for true (token válido), o usuário poderá acessar a rota.

• Se a resposta da minha função for false(token inválido), o usuário é redirecionado para a página de login.

Segue abaixo o código da api (instância do axios):

import axios from ''axios'';

const api = axios.create({
    baseURL: ''http://localhost:4000''
});

export default api; 


O código da função tokenVerify():

import api from "./api"

function tokenVerify(){
    
    const userToken = localStorage.getItem(''usertoken'')

    if(userToken !== undefined){

         api.post(''/tokenverify'', userToken
         
         ).then(res => {
            
            const statusRes = res.data.status
            
            if(statusRes === 200){
                return true
            }else{
                return false
            }
            

         }).catch(erro => {
             console.log(erro)
         })      
    }
}

export { tokenVerify }

O código da <PrivateRoute/> (rota privada do React):

import React from "react";
import { Route } from ''react-router''
import { tokenVerify } from ''../services/tokenVerify''

const PrivateRoute = ({ component: Component, ...rest }) => (

    <Route { ...rest } render={ props => (

        tokenVerify() ? ( <Component { ...props }/> ) : ( window.location.replace(''/'') )

    )}/>
)
export default PrivateRoute

E o código da rota da API de verificação do token:

const express = require(''express'')
const router = express.Router()
const jwt = require(''jsonwebtoken'');

router.post("/tokenverify", (req, res) => {

    const JWTSecret = require(''../app'')
    
    var reqToken = req.body.usertoken
   
    if(reqToken != undefined){

        jwt.verify(reqToken, JWTSecret, (error, data) => {
           
            if(error){
                res.status(401)
                res.json(''Token inválido'')

            }else{
                res.status(200);
                res.json(''Deu certo'')
            }}
)}

})

module.exports = router;


A função tokenVerify() está sempre retornando undefined, e preciso que ela retorne true ou false. Estou tentando mas ainda não identifiquei o erro. Assisti alguns vídeos e li algumas postagens em fóruns mas ainda não consegui achar algo que me ajude.

Poderiam me ajudar?
Responder

Posts

03/10/2021

Ana Gauna


import api from "./api"

function tokenVerify() {
    
    const userToken = localStorage.getItem(''usertoken'')
    const statusRes = res.data.status
    var check = boolean

    if(userToken !== undefined) {

         api.post(''/tokenverify'', userToken) {

         if(statusRes === 200) {
            check=true
            return (check);     
            }
         else { 
            check=false
            return (check);  
         }}
               
         } .catch(erro => {
             console.log(erro) 
         })    
    }
}

export { tokenVerify }



E o código da rota da API de verificação do token:

const express = require(''express'')
const router = express.Router()
const jwt = require(''jsonwebtoken'');

router.post("/tokenverify", (req, res) => {

    const JWTSecret = require(''../app'')
    
    var reqToken = req.body.usertoken
   
    if(reqToken != undefined){

        jwt.verify(reqToken, JWTSecret, (error, data) => {
           
            if(error){
                res.status(401)
                res.json(''Token inválido'')
                return();
            }

           else {
                res.status(200);
                res.json(''Deu certo'')
                return();
            }}
)}

})

module.exports = router;



Responder

03/10/2021

Ana Gauna


import api from "./api"

function tokenVerify() {
    
    const userToken = localStorage.getItem(''usertoken'')
    const statusRes = res.data.status
    var check = boolean

    if(userToken !== undefined) {

         api.post(''/tokenverify'', userToken) {

         if(statusRes === 200) {
            check=true
            return (check);     
            }
         else { 
            check=false
           }
            return (check);  
         }
               
         } .catch(erro => {
             console.log(erro) 
         })    
    }
}

export { tokenVerify }



E o código da rota da API de verificação do token:

const express = require(''express'')
const router = express.Router()
const jwt = require(''jsonwebtoken'');

router.post("/tokenverify", (req, res) => {

    const JWTSecret = require(''../app'')
    
    var reqToken = req.body.usertoken
   
    if(reqToken != undefined){

        jwt.verify(reqToken, JWTSecret, (error, data) => {
           
            if(error) {
                res.status(401)
                res.json(''Token inválido'')
            }

           else {
                res.status(200);
                res.json(''Deu certo'')
            }

           return();
           }

)}

})

module.exports = router;



Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar