node.js - 节点js不能发布未经授权
问题描述
当我尝试挂载我的 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 unauthorized。
解决方案
推荐阅读
- java - 我在确认 java 中的两个密码时遇到困难,我在 if else 中的条件语句看起来不起作用
- javascript - 在关闭键盘建议(在 Android 上)时,如何在 React Native 中安全地切换密码可见性?
- powershell - 使用为此目的格式化的文本文件将文件族移动到自己的文件夹中
- azure - Azure 中 VM 之间的时间同步偏差和偏移量 (VMSS)
- python - Discord 自定义活动属性错误,表情符号对象没有属性“get”
- azure - 如何在 Azure 上重新安装 Windows Server VM
- html - onclick 在第一次点击时不起作用,但在第一次点击后工作正常
- java - 数组中字符串的排列需要以相同的顺序排列,但不是
- python - 部分输入和输出的自定义损失
- iis - Blazor 服务器应用程序,未加载太多请求