我想知道为什么会出现这个错误,我可以成功注册并登录用户,甚至控制权转到customer/auth中的下一个,但下一个之后,邮递员显示这个,请帮助](https://i.sstatic.net/khURopb8 .png)
这是index.js
const express = require('express');
const jwt = require('jsonwebtoken');
const session = require('express-session')
const customer_routes = require('./router/auth_users.js').authenticated;
const genl_routes = require('./router/general.js').general;
const app = express();
app.use(express.json());
app.use("/customer",session({secret:"fingerprint_customer",resave: true, saveUninitialized: true}))
app.use("/customer/auth/*", function auth(req,res,next){
// middleware for authentication, firstly check for authentication and then pass control for next task...
if(req.session.authorization) {
let token = req.session.authorization['accessToken']; // Access Token
jwt.verify(token, "access",(err,user)=>{
if(!err){
req.user = user;
next();
}
else{
return res.status(403).json({message: "User not authenticated"})
}
});
} else {
return res.status(403).json({message: "User not logged in"})
}
});
`常量端口=5000;
app.use("/customer", customer_routes); app.use("/", genl_routes);
app.listen(PORT,()=>console.log("服务器正在运行")); `
这是 auth_users.js
const express = require('express');
const jwt = require('jsonwebtoken');
let books = require("./booksdb.js");
const regd_users = express.Router();
let users = [];
//Check, is the username valid
const isValid = (username)=>{ //returns boolean
let userswithsamename = users.filter((user)=>{
return user.username === username
});
if(userswithsamename.length > 0){
return true;
} else {
return false;
}
}
//Check if username and password match the one we have in records.
const authenticatedUser = (username,password)=>{ //returns boolean
let validusers = users.filter((user)=>{
return (user.username === username && user.password === password)
});
if(validusers.length > 0){
return true;
} else {
return false;
}
}
//only registered users can login
regd_users.post("/login", (req,res) => {
const username = req.body.username;
const password = req.body.password;
if (!username || !password) {
return res.status(404).json({message: "Error logging in"});
}
if (authenticatedUser(username,password)) {
let accessToken = jwt.sign({
data: password
}, 'access', { expiresIn: 60 * 60 });
req.session.authorization = {
accessToken,username
}
return res.status(200).send("User successfully logged in");
} else {
return res.status(208).json({message: "Invalid Login. Check username and password"});
}
});
// Add a book review
regd_users.put("/auth/review/:isbn", (req, res) => {
console.log("hiiii");
const isbn = req.params.isbn;
const { review } = req.body;
const username = req.session.username;
if (!username) {
res.status(401).json({ error: "User not logged in." });
return;
}
if (!review) {
res.status(400).json({ error: "Review is required." });
return;
}
if (!books[isbn]) {
res.status(404).json({ error: "Book not found." });
return;
}
const reviewObject = {
username: username,
review: review
};
if (!books[isbn].reviews[username]) {
// If the user hasn't posted a review for this book before, create a new review entry
books[isbn].reviews[username] = reviewObject;
res.status(201).json({ message: "Review posted successfully." });
} else {
// If the user has already posted a review for this book, update their existing review
books[isbn].reviews[username] = reviewObject;
res.status(200).json({ message: "Review updated successfully." });
}
});
module.exports.authenticated = regd_users;
module.exports.isValid = isValid;
module.exports.users = users;
我尝试更改客户/授权/评论的路径? (没有斜杠),也没有客户,并尽了我所能,但结果总是相同的。请帮忙。`
路线不存在
您使用的语法
app.use("/customer/auth/*", callback)
未定义任何路线。
正确的语法应该是:
app.use("route-prefix", routerMiddleware)
使用 routerMiddleware 是您定义路由的地方
您可以按照以下语法为每个路由单独使用语法:
app.put("/something", callback)
或者
app.route("/something").put(callback)