节点js无法发布未授权

时间:2020-02-08 05:23:18

标签: node.js jwt axios

当我尝试挂载isLoggedinMiddlware.js时,即使遇到可以打印存储的令牌的问题,我仍然遇到401未经授权的错误,它仍在继续。 授权。任何建议或帮助,将不胜感激!祝你有美好的一天。

这是我的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。

0 个答案:

没有答案