node js сообщение не может быть посторонним - PullRequest
0 голосов
/ 08 февраля 2020

Я столкнулся с этой ошибкой 401 несанкционированной ошибки, когда пытался смонтировать мое isLoggedinMiddlware. js, и даже когда мне удается распечатать сохраненный токен, он все еще говорит, что он авторизован. Любой совет или помощь будут оценены! Хорошего дня.

это мой isLoggedinMiddleware. js

const jwt = require("jsonwebtoken");
const JWT_SECRET = process.env.JWT_SECRET;

module.exports = (req, res, next) => {
  const authHeader = req.headers.authorization;
  if (authHeader === null || authHeader === undefined || !authHeader.startsWith("Bearer ")) {
    res.status(401).send();
    return;
  }
  const token = authHeader.replace("Bearer ", "");
  jwt.verify(token, JWT_SECRET, { algorithms: ["HS256"] }, (error, decodedToken) => {
    if (error) {
      res.status(401).send();
      return;
    }
    req.decodedToken = decodedToken;
    next();
  });
};

это мой пост api

app.post("/listings/",isLoggedInMiddleware,(req,res)=>{
  listings.insert(req.body,(error,result)=>{
    if(error){
      console.log(error)
      console.log(req.body)
      console.log(isLoggedInMiddleware)
      res.status(500).send('Internal Server Error')
      return;
    }
    console.log(result)
    res.status(201).send({"Listing Id":result.insertId})
  })
})

Это мой фронтэнд

   const baseUrl = "http://localhost:3000";
const loggedInUserID = parseInt(localStorage.getItem("loggedInUserID"));
const token = localStorage.getItem("token")
console.log(token)

if(token === null || isNaN(loggedInUserID)){
    window.location.href = "/login/"
}else{

    $('#logoff').click(function(){
    event.preventDefault();
    localStorage.removeItem('token')
    localStorage.removeItem('loggedInUserID')
    window.alert('Logging out now')
    window.location.href = "/login/"
    })
         $(document).ready(function () {            
        $('#submitbtn').click((event) => {
            const loggedInUserID = parseInt(localStorage.getItem("loggedInUserID"));
            // middleware =  {headers:{'Authorization':'Bearer '+token},data:{id: loggedInUserID}}

            event.preventDefault();
            const itemName = $("#itemName").val();
            const itemDescription = $("#itemDescription").val();
            const price = $('#price').val();
            const image = $('#image').val();
            const requestBody = {
                itemName: itemName,
                itemDescription: itemDescription,
                price: price,
                fk_poster_id: loggedInUserID,
                imageUrl: image
            }
            console.log(requestBody);
            axios.post(`${baseUrl}/listings/`,{headers:{'Authorization':'Bearer '+token},data:{id: loggedInUserID}}, requestBody)
                .then((response) => {
                    window.alert("successfully Created")
                })
                .catch((error) => {
                    window.alert("Error")
                    console.log(requestBody)

                })
        })
    })  

}

Мне удалось получить токен, который я хранил при входе в систему, однако он по-прежнему говорит 401 не авторизованным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...